是否可以将文件直接加载到std :: string_view中?
直接=无需从stringstream创建代理std :: string。
这会使我的许多代码更快。
答案 0 :(得分:2)
如果我了解您的要求,不会。
std::string_view
指的是内存区域,但它不拥有该内存。这意味着std::string_view
需要另一个对象存在,它实际上保存了它引用的char
对象。
如果std::string_view
指向std::string
并且该字符串的生存期结束,那么std::string_view
现在实际上是一个悬空的引用/指针,尝试从中读取字符将导致未定义行为。
请注意,std::string_view
可以引用char
之外的std::string
个对象的连续序列,例如简单的char
数组或std::vector<char>
,但无论如何所指对象中,所指对象必须至少存在,只要将使用std::string_view
。
答案 1 :(得分:2)
如果您有权访问boost
,则可以将字符串视图指向boost::iostreams::mapped_file
的data()
。