在 std::vector 的构造函数中使用 std::string 数据类型
Using std::string Datatype in std::vector's Constructor
与其说这是一个关于RapidXML约定的具体问题,不如说是一个关于使用std::vector的构造函数的问题。
在我发现的其他人使用RapidXML的所有例子中,每个人都总是使用std::vector
的构造函数将数据读入char
的向量中,如下所示:
vector<char> buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>());
这肯定是有原因的,因为当我尝试将其更改为 std::string
的向量时,我得到一个充满错误的屏幕,这是第一个错误:
error: invalid conversion from ‘void*’ to ‘std::istreambuf_iterator<std::basic_string<char> >::streambuf_type* {aka std::basic_streambuf<std::basic_string<char>, std::char_traits<std::basic_string<char> > >*}’
有没有办法使用 std::string,如果没有,为什么?
你想做什么?
是否希望文件的内容位于单个字符串中?如果是这样,那么
string buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>());
应该这样做。
另一方面,如果你想要一个字符串向量,每个字符串都包含文件中的一行,你必须编写这样的循环(未经测试的代码):
vector <string> lines;
for (string aLine; std::getline(theFile, aLine) ; )
lines.push_back(aLine);
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 真的没有来自 std::string_view 的 std::string 的显式构造函数吗?
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 重载 + 自己的类和 std::string 的运算符
- 如何使用 std::string 作为 QHash 的键?
- 将日语 wstring 转换为 std::string
- 可以从std::string继承以提供类型一致性吗
- 构造函数采用std::string_view与std::string并移动
- 在共享缓冲区内存中创建 ::std::string 对象
- std::string.size() 未知行为
- Valgrind 在 std::string::swap 中报告 SIGILL