ifstream
을 사용하여 파일에서 행을 가져 와서 문자열에 저장합니다. 각 행에는 공백없이 하나의 단어가 들어 있습니다.파일에서 행 읽기 - 여분의 공백 제거
virtual void readFromFile(char* input){
ifstream inf(input);
if(!inf){
cerr << "The specified file could not be found." << endl;
}
while(inf){
string str;
getline(inf, str);
pushFront(str); // store it in my data structure
}
inf.close();
}
나는 첫 번째 파일에 해당하는 문자열을 length()
를 호출 할 때, 올바른 값을 반환
a <= returns length 1 (correct)
at <= returns length 3
ate <= returns length 4
rate <= returns length 5
irate <= returns length 6
file.txt를. 그러나 다른 모든 행에 해당하는 문자열에서 length
을 호출하면 +1의 오프셋이 발생합니다. 예를 들어, 문자열의 길이가 실제로 5이면 6을 반환합니다. 이것은 새로운 줄과 관련이 있습니까? 그렇다면 어떻게 파일에서이 단어들을 제대로 추출 할 수 있습니까?
줄에 간격이 기록되어 있지 않습니까? 잠재적으로 이것은 리눅스 시스템이 새로운 줄 '\ r'과 '\ n'에 사용하는 두 개의 기호와 관련 될 수 있지만, getline이 그것들을 다듬을 것이라고 생각합니다. 그렇더라도 잘못된 단어가 '\ r'또는 '\ n'로 끝나는 지 확인하고 확실하게 알 수 있습니다. –
체크 아웃하겠습니다. – Bob
나에게 잘 보이나요? http://oi61.tinypic.com/99qqsz.jpg – Bob