从命令行读取文本文件
问题描述:
我希望能够从命令行读取文本文件。 那么我现在要做的是从命令行读取文本文件
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;
}
}
答
功能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:谢谢你指出。相应地修改了答案。 –
答
你明白了大部分完成。
- 你有你的主要的坏标记 - 这应和
int main(int argc, char** argv)
或int main(int argc, char* argv[])
- 我不明白为什么你尝试初始化
menu1
,menu2
和menu3
使用相同的参数。
您可能会将您的文件路径存储在某些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;
}
好的。你有什么尝试?你的代码在哪里? –
然后去尝试阅读文件:) - 你准备好循环了 – Dusteh
你的书应该告诉你如何使用ifstream。你确实有[好书](http://stackoverflow.com/a/388282/7455774),对吧? –