2013-09-14 6 views
-2

Скажем, у меня есть программа, которая передает файлы CSV через командную строку, а затем использует цикл для анализа соответствующего содержимого в структуре.Передача CSV-файлов через командную строку БЕЗ использования расширения файла

Использование будет примерно таким: Анализ 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 ... 

Благодаря

+2

расширение файла совершенно не имеет значения. Если файл имеет имя «100.csv», а пользователь вводит «100», то вручную конкатенируйте '.csv' в конце. В чем проблема? –

+0

Перед открытием файла необходимо добавить расширение. – Barmar

+0

@ChrisHayes, так что вы говорите, добавьте ifstream infile (argv [i] ". CSV")? Я пытался сделать что-то подобное, и он не работает – GeorgeCostanza

ответ

1

Do:

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

Если вы не C++ 11 функции, сделайте следующее:

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

спасибо. никакой лекции не требуется. – GeorgeCostanza

Смежные вопросы