假设我有一个程序通过命令行传递CSV文件,然后使用循环将相关内容解析为结构。
用法如下:Analyze 100 200 300 etc.其中Analyze是可执行文件的名称,100 200 300是CSV文件。
如果用户使用文件名输入扩展名,我可以让我的程序正常工作:
分析100.csv 200.csv 300.csv等,但我需要我的程序没有文件扩展名,例如:分析100 200 300等
示例代码:
int main(int argc, char* argv[])
{
Testing T; //struct
if (argc > 1)
{
cout << "Loading . . . \n\n" << endl;
}
else
{
cout << "Usage: Analyze filename filename filename etc\n";
return -1;
}
cout << "argc = " << argc << endl;
for (int i = 1; i < argc; i++)
{
ifstream infile(argv[i]); //open the file
if (infile.is_open() && infile.good())
{
cout << "File is now open!\nContains:\n";
string line = "";
while ( !infile.eof() )
{
getline (infile, T.str);
cout << "T.str: " << T.str << "\n";
getline (infile, T.str2);
cout << "T.str2: " << T.str2 << "\n";
YADDA YADDA YADDA ...
由于
答案 0 :(得分:1)
执行:
ifstream infile(argv[i] + std::string(".csv"));
如果您没有C ++ 11功能,请执行以下操作:
std::string filename = argv[i] + std::string(".csv");
ifstream infile(filename.c_str());