Ini adalah kode saya seperti saat ini. Kode ini memunculkan kesalahan pada cin.get(). Saya mengerti ini bukan kode yang bagus, tidak seharusnya demikian, saya hanya menguji beberapa hal cin.
#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;
}
Bagaimanapun. Masalah saya adalah cin.get(), cin.peek(), cin.ignore(), getchar(), atau hampir semua fungsi cin atau stdio yang dapat Anda beri nama menjeda eksekusi program saya saat aliran kosong, tanpa pengaturan Bit EOF atau apa pun. Ini menjengkelkan bagi saya, karena saya ingin memeriksa apakah ada sesuatu di aliran sehingga saya dapat menghapusnya, karena abaikan() selalu dijeda.
Satu-satunya metode yang dapat saya gunakan adalah 'istream::readsome'. Saya telah memuat ini ke dalam array char dan mencetaknya menggunakan cout. Ini mencetak serangkaian simbol panjang yang tidak saya kenali (Masing-masing adalah simbol individual).
http://gyazo.com/e3ee65cdad7ed5cc7b2ce2307ca58c90
Ditransmisikan ke bilangan bulat, hasilnya adalah -52, yang tidak sama dengan apa pun di ASCII atau Unicode.
Saya mengkompilasi menggunakan Visual C++ Express 2010.
Tolong bantu, saya benar-benar bingung saat ini. Saya hanya ingin membaca karakter/membilas aliran saya, tanpa berhenti jika tidak ada apa-apa. Saya telah menghabiskan 3 jam untuk mencoba menyelesaikan ini. Mendesah.
sync()
membuang apa pun yang tersisa di buffer, namun perilaku tersebut tidak dijamin. - person chris   schedule 13.11.2012Ctrl + Z
. - person Jesse Good   schedule 13.11.2012std::getline
danstd::string
tidak cukup. - person Jesse Good   schedule 13.11.2012