是否可以在不复制的情况下将std::string
划分为两个或更多个子串,就像我们可以使用移动构造函数创建新的std::string
而不复制一样?
答案 0 :(得分:7)
您无法使用std::string
执行此操作。但是,您可以使用C ++ 17中的std::string_view
执行此操作。
示例:
std::string str = "TheBigStr";
std::string_view p1 = std::string_view(str.data() + 3, 3);
字符串视图不会复制数据,因此在使用视图时不应修改str
。
答案 1 :(得分:1)
我不知道你使用的是哪个编译器,但至少微软的GSL有string_span,它本质上是一个string_view。