通过命令行传递CSV文件,不使用文件扩展名

时间:2013-09-14 05:28:38

标签: c++

假设我有一个程序通过命令行传递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 ...

由于

1 个答案:

答案 0 :(得分:1)

执行:

ifstream infile(argv[i] + std::string(".csv"));

如果您没有C ++ 11功能,请执行以下操作:

std::string filename = argv[i] + std::string(".csv");
ifstream infile(filename.c_str());