我希望能够在终端(如下所示)中写入一行,该行接受同一目录中的文本文件并将其名称输入到可执行文件中。
cat fileName | executable
我希望能够将文件名读入C++代码。我已经有了一个代码,可以访问行并读取文件,它只是从标准输入接收文件名。
是否有一行代码或函数将文件名读入C++程序并将其存储为字符串?我目前正在使用下面的代码来阅读文本文件的每一行。
ifstream myfile;
myfile.open(fileName.c_str());
if( myfile.is_open() )
{
while ( getline (myfile ,line) )
{
......
}
}
最佳答案
您只需将stdin读入一个变量(例如“fname”):
int main () {
string fname;
cin >> fname
ifstream myfile;
myfile.open (fname);
if (myfile.is_open() ) {
while ( getline (myfile, line) ) {
...
要容纳“pipe the name”或“use argc/argv”(正如许多*nix命令所做的那样):
int main (int argc, char *argv[]) {
string fname;
if (argc == 1) {
cin >> fname
}
else {
fname = argv[1];
}
ifstream myfile;
myfile.open (fname);
if (myfile.is_open() ) {
while ( getline (myfile, line) ) {
...
关于c++ - 将Linux中标准输入的文件名插入C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31571281/