我试图在一个字符串变量中收集用户的输入,该变量在指定的时间内接受空格。
由于通常的 cin >> str
不接受空格,所以我会使用 std::getline from
这是我的代码:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
string local;
getline(cin, local); // This simply does not work. Just skipped without a reason.
//............................
}
//............................
return 0;
}
任何想法?
原文由 Yana D. Nugraha 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您输出存储在
local
(顺便说一句,这是一个糟糕的变量名:P)中的内容,您可以看到为什么这会失败:输入您的号码后,您将看到它在
>
之后立即打印一个换行符。然后它继续输入其余部分。这是因为
getline
给了你输入号码后剩下的空行。 (它读取数字,但显然没有删除\n
,所以你留下了一个空行。)你需要首先摆脱任何剩余的空白:这按预期工作。
题外话,也许它只是为了手头的片段,但如果你没有
using namespace std;
,代码往往 更具 可读性。它违背了命名空间的目的。不过,我怀疑这只是为了在这里发帖。