2

私は次の方法を使用してtxtファイルを読み取ります

modelStream.open("file.txt", ios::in);
if (modelStream.fail())
    exit(1);
model = new Model(modelStream);

しかし、パラメータとして文字列を渡す方法を知りたい

string STRING;
modelStream.open(STRING, ios::in);
if (modelStream.fail())
    exit(1);
model = new Model(modelStream);

これが可能かどうか、そしてそれが可能であるかどうかを誰かが知っていますか?

4

3 に答える 3

2

従来の理由により、C ++ 03のiostreamは、引数としてCスタイルのnullで終了する文字列を想定しており、を理解していませんstd::string。幸い、次std::stringの関数を使用して、Cスタイルのnullで終了する文字列を生成できますstd::string::c_str()

modelStream.open(STRING.c_str(), ios::in);

これは実際にはC++11で「修正」されたため、これを使用している場合は、元のコードが機能します。

また、すべて大文字の変数名はお勧めしません。どちらも「文字列」と呼ばれる変数ではありません。名前に意味を説明させます。

于 2012-10-26T11:20:45.177 に答える
0

c_str ()の方法を使用するだけですstd::string

modelStream.open(STRING.c_str (), ios::in);

于 2012-10-26T11:20:59.810 に答える
0

標準ストリームは標準文字列を受け入れず、c文字列のみを受け入れます。したがって、c_str()を使用して文字列を渡します。

modelStream.open(STRING.c_str(), ios::in);
于 2012-10-26T11:38:30.340 に答える