使用此代码我从文件中读取一个字符串。rdbuf()阅读垃圾
pbuf = infile.rdbuf();
size = pbuf->pubseekoff(0, ios::end, ios::in);
pbuf->pubseekpos (0,ios::in);
buf = new char[size];
pbuf->sgetn(buf, size);
str.assign(buf, buf+size);
我在临时变量char* buff
来读取数据,因为sgetn需要char*
不是string
。
因此,在询问我的实际问题之前,如果有人知道从可能包含空格字符的文件中读取字符串的更好方法,请告诉(不循环到eof)。
文件的内容是:
等等等等
等等在新线等等
但我得到的是:
等等等等
等等在新line═
随着代码玩转我注意到奇怪字符的数量增加,因为我添加了更多\n
个字符。看起来,当我尝试获取文件的大小时,每个\n
字符需要2个字节的空间,但是在字符串中只需要1个字节,因此我的字符串看起来很奇怪。我如何避免这种情况?
[将整个ASCII文件读入C++ std :: string](http://stackoverflow.com/questions/2602013/read-whole-ascii-file-into-c-stdstring) – ipc
这可能是因为CRLF Windows风格线结束,而字符串只持有CR ... –
由于C++ 11,您可以使用'&s [0]'直接读入'string',并且它在一些预C++ 11实现(如MSVC)。 – ybungalobill