【发布时间】:2014-11-19 09:54:52
【问题描述】:
我写了一个可以从文件中获取信息的c++程序,但是它必须支持两种读取数据的方式。
第一种方法是将文件名作为命令行参数传递:./a.out a.txt
第二个是通过管道读取:cat a.txt | ./a.out
第二种方式对我来说更重要也更难。怎么办?
这是我的问题的详细信息:
有一个类,我是这样定义的:
类 API_EXPORT SamReader{
// constructor / destructor
公开: SamReader(无效); ~SamReader(void);
// closes the current SAM file
bool Close(void);
// returns filename of current SAM file
const std::string GetFilename(void) const;
// return if a SAM file is open for reading
bool IsOpen(void) const;
// opens a SAM file
// *** HERE IS MY QUESTION
bool Open(const std::string& filename);
bool Open(std::istream cin); //HERE~~~~
// retrives next available alignment
bool LoadNextAlignment(BamAlignment& alignment);
私人: 内部::SamReaderPrivate * d; };
我已经有了输入文件并得到结果的方法,但是我需要在这个类中添加一个func, 让它可以从标准输入...
感谢您的帮助,我是这里的新人,我非常感谢刚刚帮助我的人。
【问题讨论】:
-
取决于是否有命令行参数,要么从
std::cin读取,要么从命令行参数指定的文件中读取。 -
什么意思,第二种方式更重要?对于命令行程序,通常的约定是将输入文件的名称作为参数传递给函数,如果没有则从标准输入中读取(或者如果文件的名称是
"-")。