我使用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();
}
file.txt的
a <= returns length 1 (correct)
at <= returns length 3
ate <= returns length 4
rate <= returns length 5
irate <= returns length 6
當我打電話length()
上對應的第一個文件的字符串,它返回正確的值。但是,在對應所有其他行的字符串上調用length
將導致+1的偏移量。例如,如果字符串的長度實際上是5,則返回6.這是否與新行有關?如果是這樣,我怎樣才能從文件中正確提取這些單詞?
你確定沒有間隔寫在線上?這可能與Linux系統用於新行'\ r'和'\ n'的兩個符號有關,但我認爲getline將會修剪它們兩者。即便如此,請嘗試查看不正確的單詞是以'\ r'還是'\ n'結尾,我們肯定知道。 –
讓我檢查一下。 – Bob
對我來說很好嗎? http://oi61.tinypic.com/99qqsz.jpg – Bob