この投稿は、ここで与えられたソリューション、SO に関する投稿に基づいています。
次のような、特定のファイル拡張子 (文字列型) を取得する関数を作成します。
void GetFileExtension(string filename, char* extension)
{
vector<string> rec;
StrDelimit(filename, '.', rec);
//cout << rec[rec.size()-2].c_str()[1] << endl;
//extension = rec[rec.size()-2].c_str()[0];
//extension = &rec[rec.size()-2].c_str()[0];
string str = rec[rec.size()-2];
// conversion from string to char*
vector<char> writable(str.size() + 1);
std::copy(str.begin(), str.end(), writable.begin());
//cout << writable << endl;
extension = &writable[0];
}
StrDelimit は、文字列を受け取り、指定された区切り文字で部分文字列のベクトルに区切ります。
示されているように、「//string から char* への変換」を使用して、呼び出し元のメイン プログラムに結果を返します。
コンパイル エラーはありませんが、結果は無意味な文字列になります。何が問題なの?
どんな助けでも大歓迎です!
ありがとうございました!