如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
How to read space separated input in C++ When we don't know the Number of input
我已经读取了类似以下的数据
7
1 Jesse 20
1 Jess 12
1 Jess 18
3 Jess
3 Jesse
2 Jess
3 Jess
这里的7
是输入行的数量,我必须读取c++中空格分隔的输入,我如何读取那些我们不知道如何分隔的输入。这一行包含字符串和整数。
以下是一个使用operator>>
和std::string
:的示例
int x;
std::string name;
int y;
int quantity;
std::cin >> quantity;
for (int i = 0; i < quantity; ++i)
{
std::cin >> x;
std::cin >> name;
std::cin >> y;
}
以上内容适用于所有有3个字段的行,但不适用于没有最后一个字段的行将。因此,我们需要增强算法:
std::string text_line;
for (i = 0; i < quantity; ++i)
{
std::getline(std::cin, text_line); // Read in the line of text
std::istringstream text_stream(text_line);
text_line >> x;
text_line >> name;
// The following statement will place the text_stream into an error state if
// there is no 3rd field, but the text_stream is not used anymore.
text_line >> y;
}
根本原因是丢失的第三个字段元素将导致第一个示例不同步,因为它将读取第三个域的下一行的第一列。
第二个代码样本通过一次读取一行来进行校正。输入操作仅限于文本行,不会越过文本行。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何输入数组的元素,每次获得新元素时,我们将其放在数组的中间?
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 有人可以解释我这个代码吗?它给出与我们输入的数字相反
- 当我们声明 cin 为 int 并从 cin 中获取输入并在 cout 中打印 cin 时会发生什么?
- 当我们在以下程序(C )中输入字符时,该如何解决
- 我们可以在 c++ 中使用 vector 来获取未知大小的用户输入,直到我们按回车键
- 我们可以在两个输入之间获得时间吗?
- 为什么我们总是检查输入是否失败而不检查输出
- 如何创建一个模板类,该类具有两个变量,我们将从用户那里获取输入,并且输入值可以是任何类型的
- 我们应该使用哪种数据类型来输入一个介于 0<= 数字 <= 10^18 之间的数字
- 我们如何从霍尔效应传感器获得树莓派的模拟输入
- 如果我们在需要整数的开关情况下输入字符会发生什么
- 为什么我们不能在C++输入数组时输入向量?
- 为什么当我们从用户那里获得输入时我们需要一个缓冲区
- 嗨,我们在c++中有这个作业,它涉及到用户名和密码的输入
- 我们可以这样输入数组(a1,a2)吗?