昨天一个朋友在用stl中的函数来读取文件内容到一个char数组里去。
使用的方法是:
ifstream btfile("1.txt");
ostringstream temp;
temp<<btfile;
发现之读进来8个byte。
于是换为:
ifstream btfile("1.txt");
ostringstream temp;
temp<<btfile.rdbuf();
这下好象对了,不过后来一对照发现还是少读了一些字符。经过一阵调试和研究,发现1.txt中含有一些中文字符,这些中文字符全部都丢掉了。
最后,终于找到了正确的方法:
ifstream btfile("1.txt",ios_base::binary);
ostringstream temp;
temp<<btfile.rdbuf();
就是使用binary格式,而不是text格式来读取文件。这个方法和用fopen等等一系列函数来读取文件内容的方法是一致的,都是开辟一段buffer,不管文件中的字符是什么格式,每读一个byte就放到buffer里面去。
使用的方法是:
ifstream btfile("1.txt");
ostringstream temp;
temp<<btfile;
发现之读进来8个byte。
于是换为:
ifstream btfile("1.txt");
ostringstream temp;
temp<<btfile.rdbuf();
这下好象对了,不过后来一对照发现还是少读了一些字符。经过一阵调试和研究,发现1.txt中含有一些中文字符,这些中文字符全部都丢掉了。
最后,终于找到了正确的方法:
ifstream btfile("1.txt",ios_base::binary);
ostringstream temp;
temp<<btfile.rdbuf();
就是使用binary格式,而不是text格式来读取文件。这个方法和用fopen等等一系列函数来读取文件内容的方法是一致的,都是开辟一段buffer,不管文件中的字符是什么格式,每读一个byte就放到buffer里面去。