기본적으로 .txt
파일을 읽고 값을 저장하고 있습니다. 예를 들어istream 연산자 >> ' n'문자를 인식하지 않습니다.
:
Student- Mark
Tennis
이는 studentName
같은 Mark
메모리에 저장한다. 그냥
Student-
Tennis
경우
지금 ... 그 다음은 잘 작동하고 오류가 발생합니다. 파일이
Student-(space)(nothing here)
Tennis
과 같은 경우에 실제로 경우 아무것도 저장하지 않고 오류가 발생한다 때
그러나, 그것은는 studentName
으로 메모리에 Tennis
를 저장합니다. -
문자 뒤에 아무 것도 없는지 확인하려면 '\n'
문자를 사용합니다. 이
istream& operator>> (istream& is, Student& student)
{
is.get(buffer,200,'-');
is.get(ch);
if(is.peek() == '\n')
{
cout << "Nothing there" << endl;
}
is >> ws;
is.getline(student.studentName, 75);
}
나는 is.peek()
공백을 인식하기 때문에이 생각,하지만 난 is >> ws
를 사용하여 공백을 제거하려고하면 다음, 그것은 '\n'
문자를 제거하고 여전히 studentName
로 Tennis
저장 ... 내 코드입니다.
누군가이 문제를 해결할 수 있다면 많은 도움이 될 것입니다.
당신입니다. peek() =='\ n' ..... 이것이 사실이라면 함수에서 리턴해야합니다. – ha9u63ar
find_first_of() 함수를 사용하면 제거 할 공간을 인식 할 수 있도록 첫 번째 공백을 찾을 수 있습니다. –
캐리지 리턴을 고려하면 '\ n \ r'이어야합니다. – ha9u63ar