// ============================================================================ // p1c08_01 — 8.3 标准输入流 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; #include // --- 原文片段 [58954476:0] 8.3 标准输入流 --- //cin.get void test01(){ #if 0 char ch = cin.get(); cout << ch << endl; cin.get(ch); cout << ch << endl; //链式编程 char char1, char2, char3, char4; cin.get(char1).get(char2).get(char3).get(char4); cout << char1 << " " << char2 << "" << char3 << " " << char4 << " "; #endif char buf[1024] = { 0 }; //cin.get(buf.1024); cin.getline(buf,1024); cout << buf; } //cin.ignore void test02(){ char buf[1024] = { 0 }; cin.ignore(2); //忽略缓冲区当前字符 cin.get(buf,1024); cout << buf << endl; } //cin.putback 将数据放回缓冲区 void test03(){ //从缓冲区取走一个字符 char ch = cin.get(); cout << "从缓冲区取走的字符:" << ch << endl; //将数据再放回缓冲区 cin.putback(ch); char buf[1024] = { 0 }; cin.get(buf,1024); cout << buf << endl; } //cin.peek 偷窥 void test04(){ //偷窥下缓冲区的数据 char ch = cin.peek(); cout << "偷窥缓冲区数据:" << ch << endl; char buf[1024] = { 0 }; cin.get(buf, 1024); cout << buf << endl; } //练习 作业 使用cin.get和putback完成类似功能 void test05(){ cout << "请输入一个数字或者字符串:" << endl; char ch = cin.peek(); if(ch >= '0' && ch <= '9'){ int number; cin >> number; cout << "数字:" << number << endl; } else{ char buf[64] = { 0 }; cin.getline(buf, 64); cout << "字符串:" << buf << endl; } } // --- main --- int main() { test01(); test02(); test03(); test04(); test05(); return 0; }