Я сделал простую программу на C++ для считывания файлаGetLine C++ проблемы с переполнением трубы (?)
#include <string>
#include <iostream>
using namespace std;
int main()
{
string text;
getline(cin, text);
int textlength = 0;
textlength = text.length();
cout << text << endl;
cout << text[3] << endl;
cout << textlength << endl;
int number=0;
cout << "Enter a number: " << endl;
cin >> number;
}
Так что я скомпилировать эту программу в Win 8.1 Pro + MinGW и все в порядке. Затем я запустил его, написав в cmd a.exe < sample.txt
. Скомпилированная программа и txt должны находиться в одной папке.
sample.txt файл с этим текстом (некоторые случайными буквами, цифрой и т.д.):
iuhuefusifsduifhsdiufhfdliuhfdslhfdiufhfdslihfsdui 6 rer4 r4 r4t 4t46 t 4t43t 00 00 002 " & %
Все отлично работает до точки с последней КИН. Я не могу ввести число в этот момент, потому что процесс ввода пропускается. Я также попытался прочитать текст без функции getline. Вместо этого я просто повторил процесс cin и сохранил прогресс один за другим в char. Работала хорошо, пока команда cin не была в самом конце. Он пропустил это еще раз.
И идеи, как решить эту проблему?
Возможный дубликат [как восстановить std :: cin на клавиатуру после использования трубки?] (Http://stackoverflow.com/questions/12164448/how-to-restore-stdcin-to-keyboard-after-using- pipe) – deepmax
Забудьте процитировать файл '' ', если вам нужно использовать' cin' после этого. Попробуйте передать имя файла по списку аргументов и откройте его 'ifstream'. – deepmax