0

是否可以将文件直接加载到 std::string_view 中?

直接 = 不从 stringstream 创建代理 std::string。

它会使我的很多代码更快。

4

2 回答 2

2

如果您有权访问boost,则可以将字符串视图指向data()a boost::iostreams::mapped_file

于 2019-11-04T16:26:56.650 回答
2

如果我明白你在问什么,不。

std::string_view指的是内存区域,但它不拥有该内存。这意味着 anstd::string_view 要求存在另一个对象,该char对象实际上包含它所引用的对象。

如果 anstd::string_view引用 anstd::string并且该字符串的生命周期结束,那么std::string_view现在实际上是一个悬空引用/指针,并且尝试从中读取字符将导致未定义的行为。

请注意,除了 之外,它还std::string_view可以引用连续的char对象序列std::string,例如简单char数组或 an std::vector<char>,但无论它引用什么,所指对象必须至少在std::string_view使用时存在。

于 2019-11-04T16:20:34.067 回答