如何在字符串数组中输入n行?

时间:2015-06-14 19:28:46

标签: c++ arrays vector

我必须输入一个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; }
}

2 个答案:

答案 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循环之前,以忽略该行的其余部分。它现在应该工作。