如何使用C++标准输入流cin读取字符串? C cin 读取字符串三种完整方式、区别、踩坑解决前置准备头文件必须包含#includeiostream#includestring// 使用std::string必备usingnamespacestd;方法1cin 字符串变量最简单不能读空格原理提取运算符自动跳过开头空白空格、回车、Tab读到下一个空白字符立刻停止。示例string s;cout输入单词;cins;coutsendl;输入Hello World输出HelloWorld留在缓冲区未读取。适用场景只读取不含空格的单词、账号、编号等短文本。方法2getline(cin, string)读取整行包含空格原理读取缓冲区所有字符直到遇到换行符\n换行符丢弃不会存入字符串。基础示例string s;cout输入一句话;getline(cin,s);coutsendl;输入I love C完整输出整行。重大坑cin 和getline混用空行问题执行cin num输入数字按下回车后换行符残留在输入缓冲区下一次getline会直接读到空字符串。错误示例intnum;cinnum;string s;getline(cin,s);// 直接读取空跳过输入解决方案cin.ignore()清空残留换行intnum;cinnum;cin.ignore(numeric_limitsstreamsize::max(),\n);// 清空整行剩余字符string s;getline(cin,s);需要额外头文件#includelimits方法3C风格字符数组读取char[]3.1 cin char[]同样截断空格charbuf[100];cinbuf;3.2 cin.getline(char数组, 长度) 读带空格字符串charbuf[100];// 最多读取99个字符末尾自动补\0cin.getline(buf,sizeof(buf));方法4cin.get() 逐字符读取字符串进阶循环读取单个字符手动拼接可完全自定义终止条件string s;charch;while((chcin.get())!\n){sch;}couts;四种读取方式对比方式是否支持空格终止条件适用场景cin string❌ 不支持空格/回车无空格短字符getline(cin, str)✅ 支持整行换行符句子、带空格文本cin.getline(char[], N)✅ 支持整行换行/长度上限C语言字符数组cin.get()循环拼接✅ 完全自定义自己设定结束符精细控制输入常用实操模板模板1单纯读取带空格一行string line;getline(cin,line);模板2先读数字再读取带空格句子无空行bug#includeiostream#includestring#includelimitsusingnamespacestd;intmain(){intage;cinage;cin.ignore(numeric_limitsstreamsize::max(),\n);string name;getline(cin,name);coutage name;return0;}模板3连续读取多行文本string s;while(getline(cin,s)){coutsendl;}