有一个问题,我想帮助。这是怎么一回事呢: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