使用>>将分隔的输入分隔为变量操作者

时间:2017-07-09 19:13:42

标签: c++

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

#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数据,如:

#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 没有输出与调试&#34;输入循环&#34;输出意味着永远不会满足while循环条件。

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

1 个答案:

答案 0 :(得分:0)

char是一个字符,一个符号;不能少,不多了。

std::string可能包含零个或多个字符。

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

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

修改1:std::getlinestd::string
在阅读文本数据时,更喜欢将std::getlinestd::string一起使用并指定终止字符。

例如:

std::getline(cin, data, ',');

上述内容将从std::cin开始读取,直至读取',',将除“,”之外的所有内容放入data变量。