【问题标题】:How to store a const char* [] in std :: string?如何将 const char* [] 存储在 std :: 字符串中?
【发布时间】:2017-04-13 06:07:12
【问题描述】:
const char * tag1[]={"abc","xyz"};

如何在std::string中转换tag1?

std::string tag2(tag1)

它只是将 tag1[0] 复制到 tag2。我想要的是将整个 tag1 数组转换为字符串。

有什么想法或解决方法吗?

【问题讨论】:

  • 你想达到什么目的?? string 是一个字符串,而不是字符串列表。
  • @Jean-FrançoisFabre :我只是想将整个 tag1 数组转换为单个字符串。
  • 看看:stackoverflow.com/questions/5689003/… 注意:数组是邪恶的。

标签: c++ c++11 c++14


【解决方案1】:

由于您想将 C 字符串数组合并为一个 std::string,您可以这样做:

std::string tag2;   
for (auto ptr : tag1) {
    tag2.append(ptr);   
}

遍历 C 字符串数组并将它们附加到目标 std::string。

将 tag1 数组直接复制到预分配的 std::string 将不起作用,因为 tag1 中每个 C 字符串的末尾都有空终止符。你会得到abc\0xyz,而不是abcxyz

【讨论】:

  • 可能计算总大小和保留效率更高一点,而无需过多地修改代码
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2016-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多