2

C++ Builder でいくつかの C++ クラスを作成しました。現在、これらを VCL フォーム アプリケーションで使用しています。テキスト ファイルを読み込み、文字列を引数として受け取る関数があります。

openDialog コントロールを使用してファイルを参照し、それを開きます。

私の問題は次のとおりです。openFialog の .filename プロパティは UnicodeString の形式であり、関数には std::string が必要です。Unicode 文字列を std::string に変換するにはどうすればよいですか?

これが私のコードです:

OpenDialog1->Execute();
calCalendar.loadAppointmentsFromFile(OpenDialog1->FileName.t_str());

関数定義は次のとおりです。

void loadAppointmentsFromFile(const std::string& stringFilename);

次のエラーが表示されます。

[BCC32 エラー] Assessment2.cpp(39): E2342 パラメーター 'stringFilename' の型が一致しません ('const std::string &' が必要で、'wchar_t *' を取得しました)

この問題を解決するための助けをお願いできますか?

4

1 に答える 1

1

UnicodeString::t_strを使用して、絞り込まれた文字列を取得します。ただし、2 つを混在させないことを検討する必要があります。

別のオプションは、AnsiString最初に変換することです。

AnsiString str = OpenDialog1->FileName;
std::string s(str.c_str());
loadAppointmentsFromFile(s);

または

std::string s = OpenDialog1->FileName.t_str(); // TCHAR mapping set to char
loadAppointmentsFromFile(s);
于 2012-09-24T04:03:52.097 に答える