我正在尝试模仿PHP的C++文件_get_contents()函数.
但是,当我将char数组转换为字符串时,它将停止在nullbyte:
fread(charbuf, 1, file_size, fp);
string str(charbuf);
Run Code Online (Sandbox Code Playgroud)
如何将字符串初始化为静态大小数组,并将文件内容直接读取到该容器?另外,如何检查错误,例如,如果没有足够的内存来初始化该字符串.这也可以让我摆脱我目前正在使用的临时内存分配,我想摆脱它.
安全怎么样?是否有可能许多进程同时读取同一个文件和/或其中一个在我阅读时同时写入其中?我该如何避免这种情况发生?
我希望你能回答"字符串不是二进制容器"的其他方式.
我要求重新打开这个问题: "显然,这个问题与以往一样重要:两年后,两个最有效的解决方案仍然将整个文件内容复制到内存中,优化器无法忽略此副本.是一个非常不令人满意的事态. - Konrad Rudolph 2010年10月25日6:25" 在C++中将整个文件读入std :: string的最佳方法是什么?或者您是否希望我创建一个新问题,要求在没有额外字符串副本的情况下读取文件?
std::ifstream fin("somefile.txt");
std::stringstream buffer;
buffer << fin.rdbuf();
std::string result = buffer.str();
Run Code Online (Sandbox Code Playgroud)
此代码段会将您的所有文件放入std :: string
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |