Как правильно извлечь числа из входного файла в аргументе командной строки - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь использовать ifstream для извлечения двух чисел из файла в argv [1] с именем «inputFile», и оператор извлечения, кажется, извлекает биты кода, а не необходимые числа.

inputFile.txt был помещен в оператор командной строки, щелкнув правой кнопкой мыши по проекту, перейдя в свойства -> отладка -> аргументы команды -> введя inputFile.txt в аргументы команды в Visual Studio 2017.

Файл inputFile.txt выглядит следующим образом:

1 2

  #include <iostream>
  #include <fstream>
  #include <string>
  #include <iomanip>

  using namespace std;

  int main(int argc, char *argv[])
  {
  //Test opening file
  cout << "Input file: " << argv[1] << endl;
  ifstream in(argv[1]);
  if (!in)
  {
    cerr << "Unable to open " << argv[1] << " for input";
    return 1;
  }

      //extract numbers
  int num1;
  int num2;
  in >> num1 >> num2;

  cout << num1 << endl << num2 << endl;

  in.close();
  return 0;
}

Я ожидаю, что int num1 будет содержать 1, а int num2 будет содержать 2, но вместо этого каждая переменная содержит число -858993460.

1 Ответ

0 голосов
/ 04 февраля 2019

Вы уверены, что файл, который вы читаете, содержит данные, которые вы ожидаете?Этот код прекрасно работает для меня, компилируется с Visual Studio 2005. Но, если я изменяю содержимое файла, запись не чисел (например, если я пишу: ab), num1 и num2 заканчивается на -858993460.

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