【问题标题】:Fastest way to convert vector of chars to a string [duplicate]将字符向量转换为字符串的最快方法[重复]
【发布时间】:2015-08-27 03:40:45
【问题描述】:

我有一个字符向量(实际上是无符号字符):

std::vector<unsigned char> vec;

我想将它转换/复制到一个字符串对象。我尝试通过以下方式做到这一点:

std::string requestedName;

for (auto letter : vec)
{
    requestedName.append((char)letter);
}

但是编译器说这种转换是不可能的。我会获得所有帮助。

【问题讨论】:

  • 拥有相同的答案不会使问题重复。这个问题专门针对效率。

标签: c++ string c++11 vector std


【解决方案1】:

您可以使用运算符+= 来执行此连接

std::vector<unsigned char> vec {'a', 'b', 'c', 'd'};
std::string requestedName;
for (auto letter : vec)
    requestedName += letter;

Working demo

也可以使用std::string构造函数的以下重载来代替循环连接

std::vector<unsigned char> vec {'a', 'b', 'c', 'd'};
std::string requestedName{ vec.begin(), vec.end() };

【讨论】:

  • 我看不出有任何理由使用这种不必要的低效串联方法。
  • @juanchopanza 我也不能,这就是我推荐使用构造函数的原因。我只是注意到operator+= 将修复他们尝试将append 转换为字符串的方式。
  • 如果std::vector&lt;unsigned char&gt; vecstd::vector&lt;unsigned char&gt; vec {0, 1, 2, 3}; 之类的整数初始化,则输出为空白,有什么好办法解决这个问题吗?
猜你喜欢
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2017-11-08
  • 2013-01-24
  • 2013-08-22
  • 1970-01-01
相关资源
最近更新 更多