我希望能够从命令行读取文本文件。 所以我要做的是
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)
函数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。例如,它解释了程序的名称&#34;可能是一个空字符串:
argv [0]是指向以null结尾的初始字符的指针 多字节字符串,表示用于调用程序的名称 本身(或空字符串&#34;&#34;如果不支持 执行环境)
答案 1 :(得分:0)
你已经完成了它。
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;
}