我有这个需要。如果提供,则从/向文件读取或写入回退到好朋友std::cin/ std::cout,如下所示:
// pseudo code for problem statement.
int main(int argc, char* argv[])
{
istream reader;
ostrea writer;
if (argc > 1)
{
// we have path to our file in argv[]
reader = ifstream(infile);
writer = ofstream(outfile);
}
else
{
reader = cin;
writer = cout;
}
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
从本质上讲,即使我的想法很复杂,有没有办法实现类似的目标。谢谢!
使用的环境:C++ 11、14、17。
编辑#1:详细说明if条件,如果程序被称为
$: driver "input_file.txt" "output_file.txt"
Run Code Online (Sandbox Code Playgroud)
它应该从这些文件中执行 IO,相反,如果这样调用,
$: driver < "input_file.txt" > "output_file.txt"
Run Code Online (Sandbox Code Playgroud)
它应该使用std::cin和std::cout
// 编辑结束#1
我正在阅读这里的参考资料,我在想这是否有帮助?
您可以考虑以下方法:
void read_write(ifstream&, ofstream&); // Overloaded reader-writer
void read_write(istream&, ostream&);
int main(int argc, char* argv[]) {
if (argc > 1) {
auto infile = argv[1];
auto outfile = argv[2]
read_write(infile, outfile);
} else read_write(cin, cout);
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27 次 |
| 最近记录: |