-2

假设我有一个程序通过命令行传递 CSV 文件,然后使用循环将相关内容解析为结构。

用法类似于:Analyze 100 200 300 等。其中 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 ...

谢谢

4

1 回答 1

1

做:

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

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

std::string filename = argv[i] + std::string(".csv");
ifstream infile(filename.c_str());
于 2013-09-14T05:49:41.553 回答