首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用>>运算符将分隔的输入分隔为变量

使用>>运算符将分隔的输入分隔为变量
EN

Stack Overflow用户
提问于 2017-07-09 19:13:42
回答 1查看 47关注 0票数 0

我是C++的初学者,我正在尝试使用分隔的输入。我使用下面的代码获取一些分隔数据,然后将其分隔开来。

代码语言:javascript
运行
复制
#include <iostream>
#include <string>

int main()
{
    int n1,n2,n3; char data,c; 
    while (std::cin >> data >> c >> n1 >> c >> n2 >> c >> n3 && c == ','){
        std::cout << "Entered loop" << "\n";
        std::cout << "Value:" << data << "\n";
        std::cout << "Value:" << n1 << "\n";
        std::cout << "Value:" << n2 << "\n";
        std::cout << "Value:" << n3 << "\n";
        std::cout << std::endl;
        }
}

这里的输入类似于: A,1,2,3,但是如果我用std::string数据替换char数据,如下所示:

代码语言:javascript
运行
复制
#include <iostream>
#include <string>

int main()
{
    int n1,n2,n3; std::string data; char c;
    while (std::cin >> data >> c >> n1 >> c >> n2 >> c >> n3 && c == ','){
        std::cout << "Entered loop" << "\n";
        std::cout << "Value:" << data << "\n";
        std::cout << "Value:" << n1 << "\n";
        std::cout << "Value:" << n2 << "\n";
        std::cout << "Value:" << n3 << "\n";
        std::cout << std::endl;
        }
}

对于像: ABCD,1,2,3这样的输入,没有一个输出与调试“进入循环”输出相结合,这意味着that循环条件永远不会实现。

当我用字符串代替char时,这里出了什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-09 19:46:47

char是一个单一的字符,一个符号;不亚于,不多。

std::string可以容纳零或多个字符。

operator>>使用char变量时,它只读取一个字符。

operator>>使用std::string变量时,它首先忽略空白字符,然后读取字符直到读取空白字符。

编辑1: std::string

在读取文本数据时,更喜欢使用std::getlinestd::string,并指定终止字符。

例如:

代码语言:javascript
运行
复制
std::getline(cin, data, ',');

上面的内容将从std::cin读取到“,”被读取,并将除“,”以外的所有内容都放入data变量中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45000069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档