2017-11-05 15 views
-4

C++でプログラムの設定システムを作ろうとしましたが、configs avalibleのリストを表示しようとすると "const char *"を返す関数を使用しますが、funcは迷惑メールを返しますFuncが迷惑メールを返すC++

HERESにFUNC:

const char* GetCfgNameByIndex(int index) { 

int Index = 0; 
string path = "C:\\Astrium\\"; 
string temp; 

for (auto & p : fs::directory_iterator(path)) { 
    if (p.path().has_extension() && p.path().extension().string() == ".ini") { 
     Index++; 
    } 

    if (Index == index) { 
     temp = p.path().filename().string(); 
     cout << (const char*)temp.c_str() << endl; 
     return (char*)temp.c_str(); 
    } 
} 

}

相続人は、私はそれを呼び出す方法:

cout << GetCfgNameByIndex(2) << endl; 

と私はコンソールでそれを実行し、これは言う:

this

誰かが私には私の問題を聖霊降臨祭助けることができますか?

+3

スコープの外に出た 'temp'文字列のバッファへのぶら下がりポインタを返しています。 – VTT

+0

私は 'return(const char *)p.path().filename()。c_str();'のような別の方法を試してみました。同じ結果を返します。 – zShikdz

+0

ポインタではなく文字列を返します。 – stark

答えて

0

シンプルなクラスを使用できます。コンストラクタは文字列を割り当て、ボタンを作成します。デストラクタはButtonを削除し、文字列を解放します。

+0

しかし、問題はボタンが問題ではありません。なぜなら、関数funcを作成すると、文字が返ってくるだけです。 – zShikdz

+0

問題は、Buttonに必要な限り存在しなければならない文字列へのポインタをButtonに与える必要があることです。 – stark

関連する問題