C++从一个字符向量中获取一个子字符串
C++ get a substring from a vector of chars
我有一个字符向量:
std::vector<char> V = {'A', 'B', 'C', 'D'};
如何从这个向量中提取子字符串?例如,我想获得一个";ABC";类型为CCD_ 1的值。最有效的方法是什么?
我也希望避免复制数据,因为我不会修改字符串。
std::string
拥有它所持有的数据,因此不可能在不复制字符的情况下创建一个数据。C++17提供了一个非拥有的std::string_view
,它不会创建副本(但正因为如此,您需要确保向量的生存期足够长,以供string_view使用(。
std::string s1 (V.data(), V.data() + 3); //iterator constructor
std::string s2 (V.data(), 3); //pointer + count constructor
std::string_view sv1 (V.data(), V.data() + 3); //iterator constructor
std::string_view sv2 (V.data(), 3); //pointer + count constructor
std::vector<char>
有一个名为data()
的成员函数,它可以返回字符缓冲区(如果它以"\0"结尾,它将是一个c字符串-不确定这种更改是否适用(。这个你不需要复制。
如果您想要std::string
,则需要一份副本:
std::string s(v.begin(), v.end());
如果您只需要一个类似字符串的变量,您可以使用c-string或std::string_view
,后者是一个非拥有字符串。
相关文章:
- 如何获取一个数字的前3位
- 获取向量C++中第一个值和最后一个值的和
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 重载运算符*以获取对另一个类的实例的引用
- push_back通过自行创建的对象获取最后一个元素的向量
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- 互斥,Windows 10,c ++,在一个线程上获取,在另一个线程上发布
- 给定一个指向对象的超类指针,如何获取对象的大小?
- 如何获取 std::filesystem::p ath 中的最后一个目录?
- 获取指针的地址会为其分配一个值
- 如何从一个容器中获取某些元素并将其转换插入到另一个容器中?
- 有没有一种标准方法可以在C++中获取第 n 个"下一个"浮点值
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- 给枚举一个整数,并在 C++ 中将其相关值作为字符串获取
- 查询事件日志.如何查询才能单独获取第一个和最后一个事件?
- CPP:如何获取字符的最后一个索引
- C 将数据读取到一个结构,但它跳过了我的一个获取线,使该元素空白
- 如何从一个 .h 获取 int 到另一个 .h