提问人:YWH 提问时间:7/23/2023 更新时间:7/24/2023 访问量:55
getline 不允许我输入多行输入
getline doesn't allow me to enter multiple lines for input
问:
我正在编写一个程序,该程序旨在从输入中获取一个整数 N,然后读取 N 行数。 但是,在运行时,它允许我输入 N,然后输入第一行,然后立即结束,而无需等待下一行。例如,如果我输入
3
Line 1
Line 2
Line 3
然后输出是 ,在我输入后立即发生,这表明它正在完成循环。
如何让它从我的控制台输入中读取更多行?看看其他问题和答案,它们似乎都源于混合的使用,但我在这里避免了这一点,但仍然有问题。line entered no. 3: Line 1
Line 1
cin >> var
getline()
如果是控制台的问题,我在 Win10 上使用 Powershell。
#include <iostream>
#include <string>
using namespace std;
int main(void){
int N, i;
string inptstr, temp;
getline(cin, temp);
N = stoi(temp);
for (i = 0; i < N; i++);
getline(cin, inptstr);
cout << "Line entered no. " << i << ": " << inptstr << endl;
return 0;
}
答:
2赞
Andreas Wenzel
7/23/2023
#1
循环
for (i = 0; i < N; i++);
getline(cin, inptstr);
cout << "Line entered no. " << i << ": " << inptstr << endl;
是错误的。请注意,您有一个紧随其后的 .这意味着此代码等效于以下内容:;
for (i = 0; i < N; i++);
for (i = 0; i < N; i++)
{
}
getline(cin, inptstr);
cout << "Line entered no. " << i << ": " << inptstr << endl;
换句话说,你的循环实际上什么也没做。
您想要的可能如下:
for (i = 0; i < N; i++)
{
getline(cin, inptstr);
cout << "Line entered no. " << i << ": " << inptstr << endl;
}
评论
0赞
YWH
7/23/2023
是的,这似乎奏效了,谢谢!
评论
;
for (i = 0; i < N; i++)