我必须输入一个int n,并在字符串数组中读取n行。但是当我测试我的代码时,例如,我放3,它只会读取2.我发现我应该使用矢量,但为什么,有没有比矢量更容易读取n行?
示例代码:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
string niz[n];
for (int t1 = 0; t1 < n; t1++) {
getline(cin, niz[t1]); }
for (int t2 = 0; t2 < n; t2++) {
cout << niz[t2] << endl; }
}
答案 0 :(得分:3)
问题在于,当您读取换行符仍然保留在流中的行数时,读取的第一行只是一个空行(在您输入的数字后剩下的行)。
当我稍微修改程序以为每行输出添加前缀时,请参阅输入和输出的示例交换:
C:\so-test>test
3
Mary had
A little lamb.
line [0]:
line [1]: Mary had
line [2]: A little lamb.
目前,我会将解决方案作为练习留给读者。
答案 1 :(得分:0)
在第一个for循环中,在输入 n 之后,第一次迭代会获取该行中剩下的内容。您可以将cin.ignore();
放在第一个for循环之前,以忽略该行的其余部分。它现在应该工作。