私は、ユーザーが提供しているファイル名保存するクラスがあります。私は、ファイルを開こうとすると、しかしファイル名が変数格納されたファイルを開く
string EMNfn; // IDF file EMN name
// IDF file EMN name
void CcaAna::put_EMNfn(string s)
{
CcaAna::EMNfn = s;
}
string CcaAna::get_EMNfn()
{
return EMNfn;
}
を、と私はそれが存在することがわかっています私は次のように使用しています現在のディレクトリに:
femn.open(cCCA.get_EMNfn());
私はコンパイルエラーC2664を取得...からパラメータ1を変換することはできません「クラスのstd ::のbasic_string、クラスのstd ::アロケータ>」のconst「へchar * '
私が使ってみた場合:それはコンパイルが、私のエラーコードトリップ
femn.open(cCCA.get_EMNfn().c_str());
:正常に動作しますeverthingしかし
if(!femn)
{
cout << "Open of Original EMN file failed\n";
cout << "EMN file: " << cCCA.get_EMNfn() << endl;
cout << "Press any key to exit" << endl;
ch = getchar();
return 1;
}
私は直接にそれを入力します。
femn.open("262-003841-7-23.emn");
は、アイデアが不足してストリームを開く別の方法はありますか?
molbdnilo - 私はあなたが何かに上だと思います(下記参照)
OK私は後2本のCOUTラインを追加し、私はコードの下OUTPUT含まれています:
cout << "EMN file: " << cCCA.get_EMNfn() << endl;
// THIS WORKS
// femn.open("262-003841-7-23.emn");
femn.open(cCCA.get_EMNfn().c_str());
// femn.open(cCCA.get_EMNfn());
cout << "this works: " << "262-003841-7-23.emn" << endl;
cout << "*****" << cCCA.get_EMNfn() << "*****" << endl;
OUTPUTを:
処理USER INPUTファイル...
EMNファイル: "262-003841-7-23.emn"
この作品:262-003841-7-23.emn
***** "262-003841-7-23.emn" *****オリジナルEMNファイルの
オープンは
EMNファイルに失敗しました:任意の "262-003841-7-23.emn"
プレスをキーを終了する
私が見ているのは、格納されている文字列が "それの周りにあることです。これらを削除するC++の方法はありますか?
文字列が同一であることは確かですか?空白は特に見つけるのが非常に難しいことがあります。 – molbdnilo
IDEまたはデバッガでアプリケーションを起動している場合、作業ディレクトリは実行ファイルの場所と異なる場合があります。 –
[参考文献](http://en.cppreference.com/w/cpp/language/reference)の使用方法を学ぶ必要があります。不必要な文字列のコピーをたくさん作っています。 –