2015-10-28 38 views
0

我想對字符串數組進行空格/返回檢查。多一點我猜...空格/返回的C++檢查字符串數組

用戶輸入兩行,都是字符串。爲了適應這兩行,而不是製作兩個單獨的字符串變量,我創建了一個名爲string x[2]的字符串數組。然後將輸入合併到一個名爲string combined的變量中,然後在一行上輸出所有內容。

無論如何,我希望程序允許每行有多個字符串,即第一行是I like tuna,第二行是blah blah。我試圖讓這個像x[2][3]這樣的多維數組,但是如果它們只在一行中輸入一個單詞,那麼這迫使它們輸入更多的行,直到數組完全填滿。

我希望用戶在每行最多輸入3個單詞,最多輸入兩行。所以這並不意味着我必須檢查空間和回報?如果是這樣,怎麼樣?

我不想讓這個帖子無代碼,因此對於一些參考點,這裏是我的原代碼,只有讓他們每行輸入一個字,兩條路線:

int main() 
{ 
    string x[2], combined; 
    for (int i = 0; i < 2; ++i) 
    { 
     cin >> x[i]; 
     if (i == 0) combined = x[0]; 
     else 
      combined += " " + x[i]; 
    } 
    cout << combined << endl; 
} 
/* 

計劃:

Hello 
World 
Hello World 
Press any key to continue... 

我很抱歉,如果這個職位/問題很模糊,好像我還沒有把太多的思考,但是我是個初學者,一直無法推測這一個。謝謝你的時間!

回答

2

使用getline讀取輸入

string x[2]; 
cout<<"input first string"<<endl; 
getline(cin, x[0]); 
cout<<"input second string"<<endl; 
getline(cin, x[1]); 

cout<<"Printing first string "<<x[0]<<endl; 
cout<<"Printing second string "<<x[1]<<endl; 
3

使用函數getline的整個線

for (int i = 0; i < 2; ++i) 
{ 
    getline(cin, x[i]); 
} 
+0

謝謝你,它的工作!我怎樣才能使輸出與輸入相同,並在中間返回? –

+0

@ArchieGertsman for(int i = 0; i <2; i ++)cout << x [i] <<「\ n」;' –

+0

這是C++ not c。 –

0

有在C.一個類似的問題存在,如果用戶輸入字符串不能使用scanf()的與空格(因爲會有一個錯誤),你必須使用gets(),這是不安全的。