2010-04-01 153 views
2

我努力從C++中讀取控制檯中的字符。 這裏是我試圖做的:如何在C++中從控制檯讀取字符?

char x; 
char y; 
char z; 

cout<<"Please enter your string: "; 
string s; 
getline(cin,s); 
istringstream is(s); 

is>> x >> y >> z; 

的問題是,如果用戶輸入像這樣 「1 20 100」:

x will get 1 
y will get 2 
z will get 0 

我想要得到的是X = 1; y = 20; z = 100;

有人有建議嗎?

+0

char {x | y | z} - > int {x | y | z} – 2010-04-01 01:52:09

回答

3

你不想讀取字符,而是整數。

int x; 
int y; 
int z; 

cout<<"Please enter your string: "; 
string s; 
getline(cin,s); 
istringstream is(s); 

is>> x >> y >> z; 
+0

我想按字符讀取,因爲我想節省內存。字符只需要1個字節(這對我的程序來說足夠了)與整數4個字節。 – root 2010-04-01 01:36:46

+0

所以,當你想要z = 100,但要z是一個角色,你是什麼意思?你的意思是ASCII字符100嗎? – 2010-04-01 01:39:09

+0

如果你真的想要,那麼使用'short int'(根據你的編譯器和體系結構不同,它可能不小於4字節),但是我保證,如果你遇到這個基本問題,你是距離需要擔心優化以在堆棧上節省9個字節的內存很長一段距離。 – 2010-04-01 01:40:38

1

你快到了。 operator>>()是格式化的提取操作符。將類型爲char的變量更改爲int並且您很好。

1

這聽起來像你想讀整數。你可以這樣做:

int x, y, z; 

cout << "Please enter three integers: "; 
cin >> x >> y >> z; 
1

您得到這些結果的原因是因爲x,y,z是字符,當您使用istringstream它讀取的第一個字符爲X,則跳過空間和讀取字符「 2'放入y中,下一個字符是'0',然後進入z。

char x, y, z; 
cout << "Please enter three integers: "; 
cin >> x >> y >> z; 

如果不工作,只使用整數因爲試圖找到一個解決辦法,而不是使用整數字符以節省內存擔心錯誤的事情在這裏。

相關問題