C++怎样读取包罗空格在内的整行字符串s? ← getline(cin,s);

[复制链接]
发表于 2025-12-6 17:18:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
【题目形貌】
问:请分析下面代码,在利用 cin 输入带空格的整行字符串时,会输出什么?
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4.     string s;
  5.     cin>>s;
  6.     for(int i=0; i<s.size(); i++) {
  7.         cout<<s[i];
  8.     }
  9.     return 0;
  10. }
  11. /*
  12. in: abc efg
  13. out: abc
  14. */
复制代码
答:在输入为 abc efg 时,输出为 abc。显然,空格反面的部分没有输出。

【办理方案】
C++ 怎样读取包罗空格在内的整行字符串 s?
只需将常用的 cin>>s; 改为 getline(cin,s); 即可。
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4.     string s;
  5.     getline(cin,s); //cin>>s;
  6.     for(int i=0; i<s.size(); i++) {
  7.         cout<<s[i];
  8.     }
  9.     return 0;
  10. }
  11. /*
  12. in: abc efg
  13. out: abc efg
  14. */
复制代码
【真题 “洛谷:P5015 标题统计” 分析】
标题泉源:https://www.luogu.com.cn/problem/P5015
标题形貌:凯凯刚写了一篇优美的作文,叨教这篇作文的标题中有多少个字符? 留意:标题中大概包罗大、小写英笔墨母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不盘算在内。
算法代码 → 
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int cnt=0;
  4. int main() {
  5.     string s;
  6.     getline(cin,s);
  7.     for(int i=0;i<s.length();i++){
  8.         if(s[i]!=' ') cnt++;
  9.     }
  10.     cout<<cnt<<endl;
  11.     return 0;
  12. }
  13. /*
  14. in:abc@#237
  15. out:8
  16. in:Ca 356
  17. out:5
  18. */
复制代码


【参考文献】



 
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表