2016-11-29 116 views
-1
const char * tag1[]={"abc","xyz"}; 

如何将tag1转换为std :: string?如何在std :: string中存储const char * []?

std::string tag2(tag1) 

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

任何想法或解决方法?

+5

你想实现什么? 'string'是一个字符串,而不是一串字符串。 –

+0

@ Jean-FrançoisFabre:我只是想将整个tag1数组转换为单个字符串。 – secretgenes

+0

看一看:http://stackoverflow.com/questions/5689003/how-to-implode-a-vector-of-strings-into-a-string-the-elegant-way 注:阵列是邪恶的。 – Aneri

回答

4

既然你想C-字符串数组合并成一个的std :: string,你可以这样做:

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

遍历C字符串数组,并把它们添加到目的地的std :: string。

由于tag1中每个C字符串的末尾都有空终止符,因此tag1数组的直接副本将不能用于预分配的std :: string。你会得到abc\0xyz,而不是abcxyz

+1

可能计算的总大小和保留是一个更有效的没有鲤鱼代码多 –

相关问题