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

std :: stringのtag1をどのように変換するのですか?std :: stringにconst char * []を格納するには?

std::string tag2(tag1) 

タグ2にtag1 [0]をコピーするだけです。私が望むのは、tag1配列全体を文字列に変換することです。

アイデアや回避策はありますか?

+5

何を達成したいですか? 'string'は文字列であり、文字列のリストではありません。 –

+0

@ Jean-FrançoisFabre:タグ1の配列全体を単一の文字列に変換したいだけです。 – secretgenes

+0

見てください:http://stackoverflow.com/questions/5689003/how-to-implode-a-vector-of-strings-into-a-string-the-elegant-way 注意:アレイは悪です。 – Aneri

答えて

4

使用すると、1つのstd ::文字列にC-文字列の配列をマージするので、あなたはこれを行うことができます:C-文字列配列の上に

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

反復を、宛先のstd ::文字列にそれらを追加します。

tag1配列の事前割り当てstd :: stringへの直接コピーは、tag1の各C文字列の末尾にヌルターミネータがあるため機能しません。あなたはabcxyzの代わりにabc\0xyzを得るでしょう。

+1

おそらく、合計サイズを計算して予約することは、コードを大幅に修正することなく –

関連する問題