2010-04-01 3 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} –

답변

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

+0

그래서 z = 100을 원하지만 z를 문자로하고 싶다면 무엇을 의미합니까? 아스키 캐릭터 100을 의미합니까? –

+0

정말로 원한다면,'short int' (컴파일러와 아키텍처에 따라 4 바이트보다 작거나 같지 않을 수도 있음)를 사용하십시오. 그러나이 근본적인 것에 문제가 있다면, 스택에 9 바이트의 메모리를 절약하기 위해 최적화하는 것에 대해 걱정할 필요가 없습니다. –

1

거의 다 왔어. operator>>()은 형식화 된 추출 연산자입니다. 변수를 char에서 int으로 변경하십시오.

1

정수로 읽으려는 것 같습니다. 당신은 할 수 :

int x, y, z; 

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

당신이 그 결과를 얻고있는 이유는 X, Y 및 Z는 문자이기 때문에 당신이 X로 첫 번째 문자 읽기 istringstream 사용할 때, 그것은 공간을 건너 뛰고 캐릭터를 '읽는 것입니다 2 '를 y에 넣고 다음 문자는'0 '으로 z에 들어갑니다. 그래도 문제가 해결되지 않으면 메모리가 여기에 잘못된 일에 대해 걱정한다 저장하는 대신에 int 치의 문자를 사용할 수있는 해결 방법을 찾기 위해 노력하고 있기 때문에

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

, 그냥의 int를 사용합니다.

관련 문제