0

私はC++コードを持っています

ifstream myfile;
myfile.open("input");

そして、次のようなコマンドがあります:

myfile.getline(inp,256);

質問: がではなく に関連付けmyfile.open("input")られるように変更するにはどうすればよいですか?myfilecin"input"

myfile.getlineすべてのコマンドをに変更したくありませんcin.getline

宣言myfile=cinはコンパイルされません。

4

4 に答える 4

3

istream&代わりに参照を使用してください。

std::istream& myfile(std::cin);
于 2012-09-23T19:54:47.207 に答える
2

それを関数に分割しstd::istream&、引数として受け取ります。std::cinその後、必要に応じて両方で実行できmyfileます。

于 2012-09-23T19:56:01.270 に答える
1

コードを std::istream への参照を取る関数に入れることができます。

void process_data( std::istream & istr )
{ ... }

次に、任意の std::ifstream と std::cin の両方でこの関数を呼び出すことができます。

std::ifstream myfile;
...
process_data( myfile );
process_data( std::cin );
于 2012-09-23T19:56:49.980 に答える
0

の使用を主張する場合は、ベースstd::ifstreamの を置き換えることができます(オーバーロードなので、直接使用することはできません):std::streambufstd::istreamstd::ifstreamrdbuf()

std::ifstream file;
if (use_cin) {
    file.std::istream::rdbuf(std::cin.rdbuf());
}
于 2012-09-23T20:32:16.560 に答える