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

Separating delimited input into variables using >> operator

本文关键字:分隔 gt 变量 输入 运算符      更新时间:2023-10-16

我是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 数据替换字符数据,如下所示:

#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 没有输出与调试"进入循环"输出相结合,意味着永远不会满足 while 循环条件。

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

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

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

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

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

编辑 1:std::getlinestd::string
读取文本数据时,最好将std::getlinestd::string一起使用并指定终止字符。

例如:

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

上面的内容将从std::cin读取,直到读取",",将除","之外的所有内容放入data变量中。