當我通過字符串從文件字符串中讀取時,>>操作獲取第一個字符串,但它以「i」開頭。假定第一個字符串是「街道」,而不是「is?istreet」。從文件讀取C++放入三個奇怪的字符
其他字符串都可以。我嘗試了不同的txt文件。結果是一樣的。第一個字符串以「我」開頭。問題是什麼?
這裏是我的代碼:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int cube(int x){ return (x*x*x);}
int main(){
int maxChar;
int lineLength=0;
int cost=0;
cout<<"Enter the max char per line... : ";
cin>>maxChar;
cout<<endl<<"Max char per line is : "<<maxChar<<endl;
fstream inFile("bla.txt",ios::in);
if (!inFile) {
cerr << "Unable to open file datafile.txt";
exit(1); // call system to stop
}
while(!inFile.eof()) {
string word;
inFile >> word;
cout<<word<<endl;
cout<<word.length()<<endl;
if(word.length()+lineLength<=maxChar){
lineLength +=(word.length()+1);
}
else {
cost+=cube(maxChar-(lineLength-1));
lineLength=(word.length()+1);
}
}
}
*除了*:** **從不使用'.EOF()'作爲一個循環條件。它幾乎總是生成錯誤的代碼,就像它在你的情況一樣。喜歡在循環條件下進行輸入操作:'string word; while(inFile >> word){...}'。 –