我希望能够在终端(如下所示)中写入一行,该行接受同一目录中的文本文件并将其名称输入到可执行文件中。

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/

10-16 11:20