【问题标题】:How to copy std::string into std::vector<char>? [duplicate]如何将 std::string 复制到 std::vector<char> 中? [复制]
【发布时间】:2012-01-06 00:40:30
【问题描述】:

可能重复:
Converting std::string to std::vector<char>

我试过了:

std::string str = "hello";
std::vector<char> data;
std::copy(str.c_str(), str.c_str()+str.length(), data);

但它不起作用=(所以我想知道如何将std::string 复制到std::vector&lt;char&gt;std::vector&lt;uchar&gt; 中?

【问题讨论】:

  • 使用搜索很有帮助,你知道...

标签: c++ string vector copy


【解决方案1】:

std::vector 有一个带有两个迭代器的构造函数。你可以使用它:

std::string str = "hello";
std::vector<char> data(str.begin(), str.end());

如果你已经有一个vector,并且想在末尾添加字符,你需要一个后插入器:

std::string str = "hello";
std::vector<char> data = /* ... */;
std::copy(str.begin(), str.end(), std::back_inserter(data));

【讨论】:

  • 像这样声明向量 std::vector
  • @myWallJSON 您的意思是将数据从string 复制到vector&lt;unsigned char&gt;?如果charunsigned char 之间存在隐式转换(我认为存在,但我不确定),那么是的,它会起作用。
  • @R.Martinho:我很确定保留是不必要的,因为常见的标准库实现将分派给专门针对随机访问迭代器的重载,因此它们无论如何都可以使用 memmove。
  • 这是否也会将空终止符复制到向量中?
  • @Robert:照原样,不是。不过,如果需要,它可以很容易地进行修改。
【解决方案2】:

你需要一个反向插入器来复制到向量中:

std::copy(str.c_str(), str.c_str()+str.length(), back_inserter(data));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多