여기에 초보자 실수가있을 것이라고 확신하지만, 내 인생을 생각할 수는 없습니다.C++ getline()이 줄 끝에서 멈추지 않습니까?
getline()
을 사용하여 두 단어 줄 (성 및 이름)을 읽고 구조체의 멤버 필드로 이름을 정렬하려고합니다. 그러나 getline()
은 줄 끝을 지나가고 다음 줄의 첫 번째 줄을 줄의 마지막 줄에 추가합니다.
즉, 행의 마지막 단어를 읽으려고 할 때 getline()
은 그 단어와 다음 행의 첫 번째 단어를 읽습니다.
입력 파일의 형식은 :
시애틀 매리너스
Norichiki 아오키
세스 스미스
로빈슨 카노는
여기 내 코드입니다 :
struct Player {
string firstName;
string lastName;
float avg;
};
struct Team {
Player roster[8];
string teamName;
};
Team home = {};
stringstream iss;
string token;
string lineread;
while (getline(inFile, lineRead, '\n')){
iss << lineRead;
if (getline(iss, token, ' '))
{
if(s % 2 == 0)
home.roster[s/2].firstName = lineRead;
else
home.roster[s/2].lastName = lineRead;
}
s++;
cout << "token:" << token << endl;
}
출력 나는 g이다. 랩탑 설치는 다음과 같습니다
토큰 : 시애틀
토큰 : MarinersNorichiki
토큰 : AokiSeth
토큰 : SmithRobinson
하지만
토큰을 가지고 싶다을 : 시애틀
토큰 : Mariners
토큰 : Norichiki
토큰 : 아오키 더이 대신 같은 것을 시도
문제는'getline()'사용과 관련이 없다. 기대하는 결과물은 'stringstream' 연산자'<<'를 사용하여 이전 내용을 지울 수 있습니다. 그렇지 않습니다. – Peter
getline을 두 번 사용하는 이유. 's' 변수는 무엇입니까? ** 모든 ** 관련 코드를 포함하십시오. 고마워요, 레미, –