我刚刚在这个答案中发现了一条评论说iostream::eof在循环条件下使用"几乎肯定是错误的".我通常使用类似的东西while(cin>>n)- 我猜是隐式检查EOF,为什么检查eof显式使用while (!cin.eof())错误?
它与scanf("...",...)!=EOF在C中使用有何不同(我经常使用没有问题)?
在像Perl这样的脚本语言中,可以一次将文件读入变量.
open(FILEHANDLE,$file);
$content=<FILEHANDLE>;
Run Code Online (Sandbox Code Playgroud)
在C++中最有效的方法是什么?
无论如何都要读取已知的字节数,直接读入std :: string,而不创建临时缓冲区吗?
例如,目前我可以做到
boost::uint16_t len;
is.read((char*)&len, 2);
char *tmpStr = new char[len];
is.read(tmpStr, len);
std::string str(tmpStr, len);
delete[] tmpStr;
Run Code Online (Sandbox Code Playgroud)