我是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这样的输入,没有一个输出与调试“进入循环”输出相结合,这意味着that循环条件永远不会实现。
当我用字符串代替char时,这里出了什么问题。
发布于 2017-07-09 19:46:47
char是一个单一的字符,一个符号;不亚于,不多。
std::string可以容纳零或多个字符。
当operator>>使用char变量时,它只读取一个字符。
当operator>>使用std::string变量时,它首先忽略空白字符,然后读取字符直到读取空白字符。
编辑1: 和 std::string
在读取文本数据时,更喜欢使用std::getline和std::string,并指定终止字符。
例如:
std::getline(cin, data, ',');上面的内容将从std::cin读取到“,”被读取,并将除“,”以外的所有内容都放入data变量中。
https://stackoverflow.com/questions/45000069
复制相似问题