【发布时间】:2015-07-22 18:33:25
【问题描述】:
我希望能够在终端(如下所示)中编写一行,该终端在同一目录中获取一个文本文件并将其名称输入到可执行文件中。
cat fileName | executable
我希望能够将文件名读入 C++ 代码。我已经有一个代码可以访问这些行并读取文件,它只是从标准输入接收 fileName 。
是否有一行代码或函数将文件名读入 c++ 程序并将其存储为字符串?我目前正在使用下面的代码来阅读文本文件的每一行。
ifstream myfile;
myfile.open(fileName.c_str());
if( myfile.is_open() )
{
while ( getline (myfile ,line) )
{
......
}
}
【问题讨论】:
-
只是从标准输入中读取,这就是
|管道数据的地方。 -
只是为了记录,将文件名放在命令行上更正常。然后,您的程序甚至可以在包含换行符的文件名上运行。 (是的,这是可能的。不,这不常见也不是一个好主意。)但是你可以说
./myprog *.c)。有些程序确实有从标准输入读取文件名的选项,用于find ... | myprog,但你总是可以find ... -exec myprog {} +,现在find 具有用于exec 的+功能。总是有... | xargs -d'\n' myprog。