Введите имя файла при выполнении программы в C ++ - PullRequest
1 голос
/ 21 июля 2009

Я учусь C ++ , затем я искал несколько кодов, чтобы узнать что-то в области, которую я люблю: Файловый ввод / вывод , но я хочу знать, как я может настроить мой код для пользователя, введите файл, который он хочет видеть, как в wget , но с моей программой, например:

C:\> FileSize test.txt

Код моей программы здесь:

// obtaining file size
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  long begin,end;
  ifstream myfile ("example.txt");
  begin = myfile.tellg();
  myfile.seekg (0, ios::end);
  end = myfile.tellg();
  myfile.close();
  cout << "size is: " << (end-begin) << " bytes.\n";
  return 0;
}

Спасибо!

Ответы [ 3 ]

6 голосов
/ 21 июля 2009

В приведенном ниже примере argv содержит аргументы командной строки в виде массива строк с нулевым символом в конце, а argc содержит целое число, указывающее, сколько аргументов было передано.

#include <iostream>
#include <fstream>
using namespace std;

int main ( int argc, char** argv )
{
  long begin,end;
  if( argc < 2 )
  {
     cout << "No file was passed. Usage: myprog.exe filetotest.txt";
     return 1;
  }

  ifstream myfile ( argv[1] );
  begin = myfile.tellg();
  myfile.seekg (0, ios::end);
  end = myfile.tellg();
  myfile.close();
  cout << "size is: " << (end-begin) << " bytes.\n";
  return 0;
}
3 голосов
/ 21 июля 2009

main() принимает параметры:

int main(int argc, char** argv) {
    ...
    ifstream myfile (argv[1]);
    ...
}

Вы также можете получить умный, и цикл для каждого файла, указанного в командной строке:

int main(int argc, char** argv) {
    for (int file = 1; file < argc;  file++) {
        ...
        ifstream myfile (argv[file]);
        ...
    }
}

Обратите внимание, что argv [0] - это строка, указывающая на имя вашей собственной программы.

1 голос
/ 21 июля 2009

Main принимает два аргумента, которые вы можете использовать для этого. Смотрите это:

Uni ref

Ссылка MSDN (имеет команды VC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...