【发布时间】:2014-05-31 15:50:38
【问题描述】:
假设我使用这种方式创建了一个文件:
std::ofstream osf("MyTextFile.txt");
string buffer="spam\neggs\n";
osf.write(buffer,buffer.length());
osf.close();
当我尝试使用以下方式读取该文件时,我意识到读取的字符多于当前字符。
std::ifstream is("MyTextFile.txt");
is.seekg (0, is.end);
int length = is.tellg();
is.seekg (0, is.beg);
char * buffer = new char [length];
is.read (buffer,length);
//work with buffer
delete[] buffer;
例如,如果文件包含 spam\neggs\n,则此过程读取 12 个字符而不是 10 个字符。前 10 个字符是 spam\neggs\n,正如预期的那样,但还有 2 个字符具有整数值 65533。
此外,仅当文件中存在\n 时才会出现此问题。例如,如果文件包含spam\teggs\t,则没有问题。
问题是; 我做错什么了吗?或者这个程序没有按应有的方式工作?
Bonus Q:你能推荐一个一次性读取整个文件的替代方法吗?
注意:我是这样找到的here。
【问题讨论】: