2011-11-28 75 views
1
#include <iostream> 
using namespace std; 

void main(){ 
    char name[20]; 
    cin>>name;   // when I input "This is" 
    cout<<name<<endl; // output was "This" 
} 

如何做,當我輸入「這是」,輸出也將是「這是」,而不是「這個」?C++字符變量2字

+3

千萬不要將'operator >>'直接用於字符數組,你可以打開緩衝區溢出。 –

回答

6

你可以使用

cin.get(name, 20); 

cin.getline(name, 20); 

根據您是否想在你的字符串中的換行字符。

編輯:

如果您想進一步簡化您的代碼,你可以使用,而不是一個字符數組的字符串,你就不必擔心用戶超過您的緩衝區大小,則即。

string name; 
getline(cin, name); 
cout << name << endl; 

編輯2:

當大衛赫弗南還評論指出,我應該解釋爲什麼預期它不爲你工作。提取操作符(operator >>)在到達空白字符(在您的案例中爲空格)時結束。當到達空字符或文件末尾時,運算符也會終止。

+0

我認爲如果你的答案能夠提供很好的建議,你就回答了爲什麼只有一個詞正在閱讀的問題,你的答案將會得到改善。然後我可以刪除我的答案。 –

+0

@DavidHeffernan:我添加了一個解釋。謝謝:) – GWW

+0

謝謝,我現在刪除了我的答案,因爲我相信它現在不會提供超出你的內容的東西。 –