从命令行读取文本文件

问题描述:

我希望能够从命令行读取文本文件。 那么我现在要做的是从命令行读取文本文件

1)./a.out menu1.txt menu2.txt

并让用户选择他们想要多少个文件从这样也有可能是

阅读

2)./a.out menu1.txt menu2.txt menu3.txt我该怎么做?

menu1.txt 
hamburger 5.00 
pizza 3.25 
chips 2.50 

menu2.txt 
hamburger 2.00 
pizza 2.35 
chips 1.50 

menu3.txt 
hamburger 4.00 
pizza 5.35 
chips 0.50 

这是我到目前为止有:

#include <fstream> 
int main(int argc, char *argv) 
{ 
    ifstream inStream; 

    for (int i = 1; i < argc; i++) { 

    String menu1 = *argv[i]; 
    String menu2 = *argv[i]; 
    String menu3 = * argv[i]; 
    cout << i << " " << endl; 

} 

}

+0

好的。你有什么尝试?你的代码在哪里? –

+0

然后去尝试阅读文件:) - 你准备好循环了 – Dusteh

+0

你的书应该告诉你如何使用ifstream。你确实有[好书](http://stackoverflow.com/a/388282/7455774),对吧? –

功能main提供的命令行参数和参数值(包括程序本身的名称)的数量:因此,你可以达到你想要的。

#include <iostream> 

int main(int argc, char* argv[]) 
{ 
    std::cout << "The name used to start the program: " << argv[ 0 ] 
    << "\nArguments are:\n"; 
    for (int n = 1; n < argc; n++) 
     std::cout << n << ": " << argv[ n ] << '\n'; 
    return 0; 
} 

有关更多详细信息,请参阅cppreference - main function。它说明,例如,该“节目名称”可以是一个空字符串:

的argv用于

[0]的指针到一个空终止 多字节串的初始字符表示该名称调用程序 本身(或一个空字符串“”如果这不是由 执行环境支持)

+1

警告:'std :: cout user4581301

+0

@ user4581301:谢谢你指出。相应地修改了答案。 –

你明白了大部分完成。

  1. 你有你的主要的坏标记 - 这应和 int main(int argc, char** argv)int main(int argc, char* argv[])
  2. 我不明白为什么你尝试初始化menu1menu2menu3使用相同的参数。

您可能会将您的文件路径存储在某些std::vector<std::string>以供将来使用。

#include <string> 
#include <vector> 

int main(int argc, char** argv) 
{ 
    std::vector<std::string> filePaths; 
    for (int i = 1; i < argc; ++i) { 
     filePaths.emplace_back(argv[i]); 
    } 

    //... 

    return 0; 
}