读取双值后无法读取包含空格的字符串
Not able to read a string containing spaces after reading a double value
#include <iostream>
#include <iomanip>
#include <limits>
using namespace std;
int main() {
int i2 = 0;
double d2 = 0.0;
string s2;
cin >> i2;
cin >> d2;
getline(cin, s2);
cout << "Integer = " << i2 << endl;
cout << "Double = " << d2 << endl;
cout << "String = " << s2 << endl;
}
我正在尝试将样本输入为:
12
3.4
Coding
预期输出:
Integer = 12
Double = 3.4
String = Coding
实际输出
Integer = 12
Double = 3.4
String =
如上面的实际输出所示,在从上面输入前两个输入后,按下回车键的那一刻,它不接受我想要给出的下一个输入。
流中有一个'\n',所以getline读取空行。写入:
cin >> d2:
cin.ignore(); // new line
getline(cin,s2);
更新:
你可以使用一个更复杂的版本:
cin >> d2;
cin.ignore(); // removes separator
while (cin && !meaningful(s2))
getline(cin,s2);
可以在meaningful((函数中包含一些测试,例如,包含更多的空白。
调用getline()
时,在cin
处有未读的'n'
,在之后未读
cin >> d2;
所以getline()
只读取一个空字符串。
您有一个未读的换行符,因此您的getline将读取一个空行。
while(s2.empty())
{
getline(cin, s2);
}
解决了这个问题。
相关文章:
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 如何在 QT 中从.txt文件中读取空格
- 我无法读取空格并使用 devc++ 输入 c++
- 读取空格会使解析器崩溃.为什么?
- 未读取空格
- 从文件中读取空格
- 读取空格将数字从文本文件分隔到整数数组 (C++)
- 字符串没有变蓝,只读取空格
- std::stringstream 不读取空格
- 从文件中读取空格分隔的数字
- 使用 getline() 读取空格不起作用
- 有没有一种不使用std::getline从文件中读取空格的方法?
- 从文件中读取空格分隔的数字,直到换行符
- 不会使用 ifstream 读取空格
- 从 ifstream 读取不会读取空格
- 使用sscanf从c++文件中读取空格分隔符
- 用空格数据读取空格分隔的数据