有一個問題,我想幫助。這是怎麼一回事呢:C++從文件中讀取不正確
我用下面的代碼閱讀一定量的字符爲字符數組後處理:
char str[15]; // first 16 characters that i need to get from file
std::ifstream fin("example.txt");
if(fin.is_open()){
std::cout<<"File opened successfully \n";
for(int i = 0; i<=15; i++)
{
fin.get(str[i]); //reading one character from file to array
}
}
else{
std::cout<<"Failed to open file";
}
std::cout<<str;
它工作正常,前4甚至5個字符,但是當它達到8時,它開始打印垃圾字符。
example.txt文件的內容,我從中讀取文本。
The Quick Brown Fox Jumped Over The Lazy Dog The Quick Brown Fox Jumped Over The Lazy Dog
輸出,當我讀8個字:
The Quic�j�
輸出,當我讀到16個字符:
The Quick Brown ASCII
這究竟是爲什麼,在哪裏了 'ASCII' 來的時候我嘗試從文件中讀取一定的長度?
最後,如果我想從文件中獲取特定長度,應該使用哪種代碼?例如,如果我想讀取前4或8或16甚至20個字符?它不一定必須存入char數組,它可以被保存爲一個字符串。
預先感謝您。
您需要在從文件中讀取最後一個字符後放置一個'\ 0'字符。 – 2014-10-01 09:11:58
std :: string line; getline(鰭,線); std :: cout << line; //快速布朗狐狸跳過懶惰的狗快速布朗狐狸跳過懶惰的狗 – Jagannath 2014-10-01 09:12:08
您的char數組需要更大或者您的循環需要<15且不是<= 15。C++是從零到n - 1爲數組索引。 – 2014-10-01 09:13:23