尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

如何使用C++标准输入流cin读取字符串?

如何使用C++标准输入流cin读取字符串?
📅 发布时间:2026/7/2 12:07:51

C++ cin 读取字符串三种完整方式、区别、踩坑解决

前置准备

头文件必须包含:

#include<iostream>#include<string>// 使用std::string必备usingnamespacestd;

方法1:cin >> 字符串变量(最简单,不能读空格)

原理

提取运算符>>自动跳过开头空白(空格、回车、Tab),读到下一个空白字符立刻停止。

示例

string s;cout<<"输入单词:";cin>>s;cout<<s<<endl;

输入:Hello World
输出:Hello,World留在缓冲区未读取。

适用场景

只读取不含空格的单词、账号、编号等短文本。

方法2:getline(cin, string)读取整行(包含空格)

原理

读取缓冲区所有字符,直到遇到换行符\n;换行符丢弃,不会存入字符串。

基础示例

string s;cout<<"输入一句话:";getline(cin,s);cout<<s<<endl;

输入:I love C++,完整输出整行。

重大坑:cin >>和getline混用空行问题

执行cin >> num输入数字按下回车后,换行符残留在输入缓冲区,下一次getline会直接读到空字符串。

错误示例
intnum;cin>>num;string s;getline(cin,s);// 直接读取空,跳过输入
解决方案:cin.ignore()清空残留换行
intnum;cin>>num;cin.ignore(numeric_limits<streamsize>::max(),'\n');// 清空整行剩余字符string s;getline(cin,s);

需要额外头文件:

#include<limits>

方法3:C风格字符数组读取(char[])

3.1 cin >> char[](同样截断空格)

charbuf[100];cin>>buf;

3.2 cin.getline(char数组, 长度) 读带空格字符串

charbuf[100];// 最多读取99个字符,末尾自动补'\0'cin.getline(buf,sizeof(buf));

方法4:cin.get() 逐字符读取字符串(进阶)

循环读取单个字符,手动拼接,可完全自定义终止条件:

string s;charch;while((ch=cin.get())!='\n'){s+=ch;}cout<<s;

四种读取方式对比

方式是否支持空格终止条件适用场景
cin >> string❌ 不支持空格/回车无空格短字符
getline(cin, str)✅ 支持整行换行符句子、带空格文本
cin.getline(char[], N)✅ 支持整行换行/长度上限C语言字符数组
cin.get()循环拼接✅ 完全自定义自己设定结束符精细控制输入

常用实操模板

模板1:单纯读取带空格一行

string line;getline(cin,line);

模板2:先读数字,再读取带空格句子(无空行bug)

#include<iostream>#include<string>#include<limits>usingnamespacestd;intmain(){intage;cin>>age;cin.ignore(numeric_limits<streamsize>::max(),'\n');string name;getline(cin,name);cout<<age<<" "<<name;return0;}

模板3:连续读取多行文本

string s;while(getline(cin,s)){cout<<s<<endl;}

相关新闻

  • 构建小程序全自动安全审计体系:从原理到实践
  • 【Vibe Coding从入门到精通】第13篇:团队协作中的Vibe Coding——从个人利器到团队武器
  • 2026年中盘点:什么八字排盘软件好用?第三方测评拆到排盘底层

最新新闻

  • ASM330LHH与STM32F410RB的运动跟踪系统设计与优化
  • 微信小程序怎么制作自己的小程序?5款小程序开发工具实测(2026年7月更新)含零代码SAAS、AI编程、源码定制交付
  • 前后端RSA加解密实战:Java与JavaScript实现安全通信
  • 阴阳师自动化脚本终极指南:AI智能助手彻底解放你的游戏时间
  • 抖音弹幕抓取神器完整指南:3分钟搭建实时数据监控系统
  • 2026年短视频矩阵起盘:最少需要多少个账号才能跑通模型?

日新闻

  • Python Playwright录制功能:从零到一构建自动化测试脚本
  • 如何用开源工具永久保存你心爱的小说:novel-downloader全攻略
  • In-Context Learning不是教知识,而是模式对齐:从5个示例到100个工业级样本的真相

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号