Есть ли способ использовать getline () с внешним текстовым файлом, а затем вернуть контроль, чтобы cin мог принимать ввод с консоли? - PullRequest
0 голосов
/ 22 сентября 2019

Я новичок в C ++, и мне интересно, есть ли способ использовать просто стандартный iostream для чтения во входном файле (используя свойства отладки: <имя файла) или другой, а затем получить обратно управление в консоль, чтобы позже ввести что-то другое с помощьюcin. </p>

Я разделил часть чтения файла в другую функцию, но, кажется, когда я указываю в свойствах проекта команду для захвата содержимого файла построчно с помощью getline (), она пропускает любые команды cin, которые я выпускаюпозже.

Я уверен, что это может быть просто проблема установки, или мне может понадобиться как-то разбить ее на другую программу в проекте?Это консольное приложение, но наверняка есть способ сделать оба в одном и том же проекте?

Я читал, что вы не можете использовать и cin, и getline вместе, но как ввести один файл, а затем попроситьбольше информации от пользователя в приложении C ++, использующем Visual Studio?

Отдельная программа и функции для чтения файла

'int lineIter = 0;
cin.getline(rowData, arraySize);  // Grab first row of data
    while (!cin.eof()) {
        // output each row of data to screen:
        cout << rowData << endl;
          }

///// Increment for next ROW
lineIter++;
cin.getline(rowData, arraySize);'

Затем, как мне вернуться к возможности использовать cin илидругие, чтобы получить ввод от пользователя?

Позже я попробовал много вариантов ниже:

'cin.clear();
cin.ignore(arraySize);
cin >> selectR[b];'

и другие варианты getline (), но ни одна из них не останавливает выполнение программы, и я не могу получить ихсделать что-нибудь, кроме как попытаться снова прочитать файл.

Я использую VS 2019 Community Edition

1 Ответ

0 голосов
/ 23 сентября 2019

Я не совсем понимаю, чего вы здесь добиваетесь.

В настоящее время вы читаете внешний файл, изменяя "источник" std::cin с консоли на заданный.файл ;это изменение сделано вне вашей программы, на уровне отладчика.Таким образом, вы не сможете изменить источник обратно на консоль из самой программы.(Вы можете сделать это из отладчика, пока он работает).

Если вы хотите читать внешние файлы и все еще можете использовать std::cin нормально, почему бы не использовать std::fstream s?

С другой стороны, если вам абсолютно необходимо передать файл программе через std::cin, вы должны оставить его по умолчанию и просто скопировать и вставить свой файл в консоль.Будьте осторожны: поскольку файл, вероятно, содержит переводы строки, вы не сможете использовать их в качестве конца ввода, поэтому вам придется придумать другой способ, чтобы программа распознала конец файла (например, две последовательные пустые строки).).

...