使用运算符将分隔的输入分隔>>变量
Separating delimited input into variables using >> operator
我是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::getline
和std::string
读取文本数据时,最好将std::getline
与std::string
一起使用并指定终止字符。
例如:
std::getline(cin, data, ',');
上面的内容将从std::cin
读取,直到读取",",将除","之外的所有内容放入data
变量中。
相关文章:
- 如何将 txt 文件中的行分隔为组件C++
- 无法通过空白将文本文件行分隔为矢量
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- EASTL矢量<向量<int>>连续的
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- "Warning: Comma within array index expression"但逗号分隔函数参数
- C++逗号分隔的输入数组代码过早退出
- 如何分隔字符串并将标记传递给方法
- 分隔整数 (C++) 的数字
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- 读取制表符分隔的文件时出现问题 C++
- 通过分隔符分隔包含 UTF-16 BE 文本的uint8_t数组
- 如何更新和删除文本文件中的特定逗号分隔值?C++
- 如何将逗号分隔的文件读取为 2D int 数组?