2013-02-25 3 views
1

아래 코드를 가지고 있습니다. 코드 다음에 샘플 입력 파일이옵니다. 나는 배열를 법원에 갈 때 그것은이 맘 않습니다문자열로 벡터 출력하기

출력 : 이동하기 왜 문자열은 다음 공백까지 읽고있다

Joe 
Browns 
93 
Samantha 
Roberts 
45 

? 문자열이 공백을 허용한다고 생각 했나요? 감사.

코드 :

ifstream in_stream; 

    in_stream.open("in.dat"); 
    if(in_stream.fail()) 
    { 
     cout<< "Input file opening failed. \n"; 
     exit(1); 
    } 
    vector <string> a; 
    int i = 0; 
    string dummy; 
    while(in_stream>>dummy) 
    { 
     a.push_back(dummy); 
     cout<<a[i]<<endl; 
     i++; 
    } 
    in_stream.close(); 

샘플 입력 파일 :

Joe Browns 
93 
Samantha Roberts 
45 

답변

1

operator>>은 구분 기호로 공백의 어떤 종류를 해석합니다. 전체 행을 읽어야 할 경우 getline()을 사용하십시오.

+0

괜찮 으면, getline (in_stream, dummy); 재미있는 형식으로 반환됩니다. 그래서 그것은 아직 바르지 않다. –

+1

@ user22507 너에게 너무 재미 있으면, 너의 유머 감각에 문제가 있을지도 모른다. :). 농담은 제쳐두고, 당신은 정말로 그것이 잘못된 것이라고 말해야합니다. 'getline'은 보통 이상한 형식을 취하지 않습니다. – us2012

0

while 회 돌이를 변경하면 전체 줄을 읽을 수 있습니다.

while (getline(in_stream, dummy)) 
{ 
    a.push_back(dummy); 
    cout << a[i] << endl; 
    i++; 
} 
+1

while 루프에서 .eof를 사용하면 좋지 않습니다. http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong –

+0

네가 맞다, 내 대답을 udated –

+0

, 고마워! 나는 거의 근접했다 :)) –