Это мой код, как он есть в настоящее время. Этот код выдает ошибку в cin.get(). Я понимаю, что это плохой код, он никогда не должен был быть таким, я просто тестировал некоторые вещи.
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char c[1000];
cin.setstate(cin.eofbit);
cout << cin.good() << endl;
cout << cin.eof() <<endl;
cout << cin.get() << endl;
cin.putback('c');
cout << cin.get() << endl;
cout << "Do we ever reach this?" << endl;
while(1){
};
return 0;
}
Так или иначе. Моя проблема заключается в том, что cin.get(), cin.peek(), cin.ignore(), getchar() или почти любая функция cin или stdio, которую вы можете назвать, приостанавливает выполнение моей программы, когда поток пуст, без установки Биты EOF или что-то еще. Меня это раздражает, так как я хочу проверить, есть ли что-нибудь в потоке, чтобы очистить его, так как ignore() всегда делает паузу.
Единственный метод, который я могу заставить работать, — это «istream::readsome». Я загрузил это в массив символов и распечатал с помощью cout. Он печатает длинную строку символов, которые я не узнаю (каждый из них является отдельным символом).
http://gyazo.com/e3ee65cdad7ed5cc7b2ce2307ca58c90
При преобразовании к целому числу они получаются как -52, что не соответствует чему-либо ни в ASCII, ни в Unicode.
Я компилирую с помощью Visual C++ Express 2010.
Пожалуйста, помогите, я совершенно запутался в этом вопросе. Я просто хочу читать символы/сбрасывать мой поток, не останавливаясь, если там ничего нет. Я потратил добрых 3 часа, пытаясь решить эту проблему. Вздох.
sync()
отбрасывает все, что осталось в буфере, но такое поведение не гарантируется. - person chris   schedule 13.11.2012Ctrl + Z
. - person Jesse Good   schedule 13.11.2012std::getline
иstd::string
было бы недостаточно. - person Jesse Good   schedule 13.11.2012