我是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时,这里出了什么问题。
答案 0 :(得分:0)
char
是一个字符,一个符号;不能少,不多了。
std::string
可能包含零个或多个字符。
当operator>>
使用char
变量时,它只会读取一个字符。
当operator>>
使用std::string
变量时,它首先忽略空白字符,然后读取字符,直到读取空格字符。
修改1:std::getline
和std::string
在阅读文本数据时,更喜欢将std::getline
与std::string
一起使用并指定终止字符。
例如:
std::getline(cin, data, ',');
上述内容将从std::cin
开始读取,直至读取',',将除“,”之外的所有内容放入data
变量。