0

リストにいくつかの要素を追加しました

std::list<std::string> dirList2;
//Code
dirList2.push_back(findData.cFileName);

copy(dirList2.begin(), dirList2.end(),std::ostream_iterator<std::string>  (std::cout,"\n"));

すべてがうまくいきました、私はこのアイテムを見ることができます、

ここで、リストの最初の要素をchar*に割り当てたいと思います。

誰かが私を助けてくれますか?やり方がわからない

4

2 に答える 2

5

私があなたが望むものをよく理解しているなら、あなたはこのようにそれをすることができます:

const char *s = dirList2.front().c_str();

ただし、注意してください。変数が指すC文字列sは、リストにある文字列オブジェクトによって所有されます。リストがスコープ外になるか、リストから要素を削除すると、C文字列はstd::stringのデストラクタによって解放され、sポインタは無効になります。

オブジェクトのリフトを超えてCストリングを操作したい場合は、sthをstd::string実行できます。このような:

const char *s = strdup(dirList2.front().c_str());

std::stringただし、選択の余地がない限り、通常は生のCポインターの代わりに使用することをお勧めします。

于 2012-09-11T09:50:24.967 に答える
1

文字列オブジェクトは、c_str()constchar*を返すメソッドを提供します。文字列を変更する必要がある場合は、文字列のコピーも作成する必要があります(つまり、ソースポインタがによって返されるstrcpyを使用しますc_str()

于 2012-09-11T09:50:22.363 に答える