C++ C++;从stdin读取文件名

C++ C++;从stdin读取文件名,c++,C++,因此,我正在尝试构建一个版本的wc,该程序的关键功能之一是,您可以通过两种方式指定文件: wc file.txt 及 wc

因此,我正在尝试构建一个版本的wc,该程序的关键功能之一是,您可以通过两种方式指定文件:

wc file.txt

wc

我已经想出了如何实现第一种方法,但我正在努力实现第二种方法。我如何才能做到这一点?

像这样的工具(包括许多其他工具,如
grep
)的工作方式是,如果命令行上没有指定文件名的参数,则从
std::cin
读取输入


简单来说,如果
argc
为1,则只有可执行文件名作为参数,因此没有指定任何文件。在更实际的情况下,您可能会使用类似的方法来解释各种标志,但会给出非标志参数的计数。

该管道(
@PeteBecker不确定如何准确地做到这一点。我尝试了以下方法:
if(argv[argc-1]=“-w”| argv[argc-1]=“-l”| argv[argc-1]=“-c”){fileName=cin else{fileName=argv[argc-1];}
并且它抛出了一系列错误。这些错误是由操作系统设置的;它们是透明的。只需从
std::cin
读取传入的数据。在处理命令行参数之前,先处理这些错误。基本方法是打开文件名的
std::istream
,然后将打开的流作为引用传递给函数(例如,
std::istream&
),或者如果没有文件名,则提供pass
std::cin
。这里有一个示例
wc < file.txt