2017-05-28 30 views
0

下面的代碼失敗:C++:如何使用char/string 2d數組接受來自用戶的超過1個參數?

#include <iostream> 
#include <string> 
using namespace std; 

int main(){ 
    int a, b; 
    cout << "how many input you want to give ? "; 
    cin >> a; 
    b = a - 1; 
    string str[b];    
    for(int i = 0; i <= b; i++){ 
     cout << "Enter a string: "; 
     getline(cin, str[i]); 
    } 

    for(int k = 0; k < a; k++){ 
     cout << "You entered: " << str[k] << endl; 
    } 

    return 0; 
} 

但如果我固定的值「詮釋了」,然後運行代碼。請幫忙。

回答

0

數組在編譯時必須具有固定的大小,因此要創建一個具有動態大小的數組,您可以使用關鍵字newdelete[]在堆上創建它以釋放內存。

還什麼是點:

cin >> a; 
b = a - 1; //? 

您可以輕鬆地做到這一點是這樣的:

int n; 
cout << "how many input you want to give ? "; 
cin >> n; 
string* str = new string[n];    
for(int i = 0; i < n; i++){ 
    cout << "Enter a string: "; 
    getline(cin, str[i]); 
} 

for(int k = 0; k < n; k++){ 
    cout << "You entered: " << str[k] << endl; 
} 

不要忘記清潔時,即可大功告成:

delete[] str; 
0

你會想要清除輸入緩衝區,換行符是「你想給多少輸入?」被輸入到第一個「輸入字符串:」。

在cin >> a;後添加此行。

cin.ignore(INT_MAX, '\n'); 
0

使用一個向量來存儲輸入。

#include <vector> 
#include <string> 
#include <iostream> 
using names pace std; 

int main() 
{ 
    vector <string> input; 
    string tmp; 

    while (getline(cin, tmp)) 
     input.push_back(tmp)); 

    for(auto s : input) 
     cout << s << '\n'; 
} 
相關問題