相关疑难解决方法(0)

在C++中将整个文件读入std :: string的最佳方法是什么?

如何将文件读入a std::string,即一次读取整个文件?

文本或二进制模式应由调用者指定.该解决方案应符合标准,便携且高效.它不应该不必要地复制字符串的数据,它应该避免在读取字符串时重新分配内存.

实现此目的的一种方法是统计文件大小,调整大小std::stringfread()进入std::string's const_cast<char*>()' data().这要求std::string数据是连续的,这是标准不需要的,但似乎是所有已知实现的情况.更糟糕的是,如果在文本模式下读取文件,则其std::string大小可能与文件大小不同.

一个完全正确的,符合标准的和便携式解决方案,可以构建使用std::ifstreamrdbuf()进入std::ostringstream,并从那里进入std::string.但是,这可能会复制字符串数据和/或不必要地重新分配内存.所有相关的标准库实现是否足够智能以避免所有不必要的开销?还有另一种方法吗?我是否错过了一些已经提供所需功能的隐藏Boost功能?

请显示您的建议如何实施.

void slurp(std::string& data, bool is_binary)
Run Code Online (Sandbox Code Playgroud)

考虑到上面的讨论.

c++ string file-io

155
推荐指数
10
解决办法
6万
查看次数

使用c ++读取文本文件最优雅的方法是什么?

我想std::string用c ++ 读取文本文件的全部内容到一个对象.

使用Python,我可以写:

text = open("text.txt", "rt").read()
Run Code Online (Sandbox Code Playgroud)

它非常简单而优雅.我讨厌丑陋的东西,所以我想知道 - 用C++读取文本文件最优雅的方法是什么?谢谢.

c++ file-io text

57
推荐指数
2
解决办法
6万
查看次数

如何使用RapidXml解析XML文件

我必须用C++解析XML文件.我正在研究并找到了RapidXml库.

我对此表示怀疑doc.parse<0>(xml).

可以xml是.xml文件,还是需要是?stringchar *

如果我只能使用string或者char *我想我需要读取整个文件并将其存储在char数组中并将其指针传递给函数?

有没有办法直接使用文件,因为我还需要更改代码中的XML文件.

如果在RapidXml中无法做到这一点,请在C++中推荐一些其他XML库.

谢谢!!!

Ashd

c++ xml parsing rapidxml

19
推荐指数
3
解决办法
4万
查看次数

标签 统计

c++ ×3

file-io ×2

parsing ×1

rapidxml ×1

string ×1

text ×1

xml ×1