2015-06-14 67 views
1

我必須輸入的int n和讀在一個字符串數組n行。但是,當我測試我的代碼,例如,我把3,它只會讀取2.我發現我應該使用載體,但爲什麼,有沒有什麼辦法比更容易載體讀n行?如何在字符串數組中輸入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; } 
} 
+1

如在該隊列中,VLA的ARENT標準特徵提到[最近](http://stackoverflow.com/questions/30833225/are-arrays-not-dynamically-allocated-in-c)。還詳細說明_「,第三個將是錯誤的。」_請。你的代碼應該工作得很好。 –

+0

它不起作用。如果工作正常,我會把它放在這裏。 – NikolaTEST

+0

_「不起作用」_對任何人都沒有幫助。所以有人提到[輸入,預期輸出](http://ideone.com/2UTSNf)?請改善你的問題。 –

回答

0

在第一個for循環,第一次迭代花費還剩下些什麼該行中輸入你ň後。您可以在第一個for循環之前放置cin.ignore();以忽略該行的其餘部分。它現在應該工作。

3

的問題是,當你閱讀換行仍然留在流中的行數,使得讀取第一行只是一個空行(即你輸入號碼後剩下)。

見及輸入和輸出,當我修改程序有點前綴輸出的每一行的例子交流:

C:\so-test>test 
3 
Mary had 
A little lamb. 
line [0]: 
line [1]: Mary had 
line [2]: A little lamb. 

就目前而言,我將離開溶液作爲練習留給讀者。

相關問題