我有聲明輸入流
ifstream myfile;
myfile.open("input");
一個C++代碼,然後有一個像命令:
myfile.getline(inp,256);
問:我怎樣才能修改myfile.open("input")
使myfile
與cin
代替"input"
關聯?
我不想將所有myfile.getline
命令更改爲cin.getline
。
聲明myfile=cin
不能編譯。
我有聲明輸入流
ifstream myfile;
myfile.open("input");
一個C++代碼,然後有一個像命令:
myfile.getline(inp,256);
問:我怎樣才能修改myfile.open("input")
使myfile
與cin
代替"input"
關聯?
我不想將所有myfile.getline
命令更改爲cin.getline
。
聲明myfile=cin
不能編譯。
使用一個istream&
參考代替:
std::istream& myfile(std::cin);
分離出來成一個函數,並採取std::istream&
作爲參數。然後您可以根據需要在std::cin
和myfile
上執行。
你可以把你的代碼放入一個引用std :: istream的函數,例如
void process_data(std::istream & istr)
{ ... }
然後你就可以調用這個函數都與任何的std :: ifstream的,並給std :: cin:
std::ifstream myfile;
...
process_data(myfile);
process_data(std::cin);
如果您在使用std::ifstream
堅持,你可以更換基本std::istream
的std::streambuf
(std::ifstream
過載rdbuf()
所以你不能直接使用它):
std::ifstream file;
if (use_cin) {
file.std::istream::rdbuf(std::cin.rdbuf());
}