归档到 std::string_view
File to std::string_view
是否可以将文件直接加载到 std::string_view?
直接 = 不从 stringstream 创建代理 std::string。
它会让我的很多代码更快。
如果我明白你在问什么,不。
std::string_view
指的是内存区域,但是 它不拥有该内存。 这意味着 std::string_view
需要 存在另一个对象,它实际上包含它所引用的 char
个对象。
如果 std::string_view
指的是 std::string
并且该字符串的生命周期结束,那么 std::string_view
现在实际上是一个悬空的 reference/pointer 并试图从中读取字符它会导致未定义的行为。
请注意 std::string_view
可以引用 std::string
之外的 char
对象的连续序列,例如简单的 char
数组或 std::vector<char>
,但无论它指的是什么,所指对象 必须至少在 std::string_view
被使用时存在。
如果您有权访问 boost
,则可以将字符串视图指向 boost::iostreams::mapped_file
的 data()
。
是否可以将文件直接加载到 std::string_view?
直接 = 不从 stringstream 创建代理 std::string。
它会让我的很多代码更快。
如果我明白你在问什么,不。
std::string_view
指的是内存区域,但是 它不拥有该内存。 这意味着 std::string_view
需要 存在另一个对象,它实际上包含它所引用的 char
个对象。
如果 std::string_view
指的是 std::string
并且该字符串的生命周期结束,那么 std::string_view
现在实际上是一个悬空的 reference/pointer 并试图从中读取字符它会导致未定义的行为。
请注意 std::string_view
可以引用 std::string
之外的 char
对象的连续序列,例如简单的 char
数组或 std::vector<char>
,但无论它指的是什么,所指对象 必须至少在 std::string_view
被使用时存在。
如果您有权访问 boost
,则可以将字符串视图指向 boost::iostreams::mapped_file
的 data()
。