C++数据个数未知情况下的输入方法
我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。
这种情况下,我们可以用以下两种方法输入数据。
方法一:判断回车键(用getchar()=='\n'即可判断)
1 //以整数为例 2 #include <iostream> 3 #include <vector> 4 #include <algorithm> 5 using namespace std; 6 7 int main(){ 8 vector<int> v; 9 int tmp; 10 while(cin>>tmp){ 11 v.push_back(tmp); 12 if(getchar() == '\n') 13 break; 14 } 15 //输出 16 for(int val:v){ 17 cout<<val<<endl; 18 } 19 return 0; 20 }
1 //以字符串为例 2 #include <iostream> 3 #include <vector> 4 #include <algorithm> 5 using namespace std; 6 7 int main(){ 8 vector<string> v; 9 string tmp; 10 while(cin>>tmp){ 11 v.push_back(tmp); 12 if(getchar() == '\n') 13 break; 14 } 15 //输出 16 for(string val:v){ 17 cout<<val<<endl; 18 } 19 return 0; 20 }
方法二:用istringstream流对象处理
1 //以字符串为例 2 #include<iostream> 3 #include<sstream> //istringstream 4 #include<string> 5 using namespace std; 6 int main() 7 { 8 //string str="I like wahaha! miaomiao~"; 9 string str; 10 cin>>str; 11 istringstream is(str); 12 string s; 13 while(is>>s) 14 { 15 cout<<s<<endl; 16 } 17 }
1 //以整数为例(先将一行数当做string输入,再进行转换) 2 #include<iostream> 3 #include<sstream> //istringstream 4 #include<string> 5 using namespace std; 6 int main() 7 { 8 //string str="0 1 2 33 4 5"; 9 string str; 10 getline(cin,str); 11 istringstream is(str); 12 int s;//这样就转换为int类型了 13 while(is>>s) 14 { 15 cout<<s+1<<endl;//现在已经可以运算了 16 } 17 }
『注:本文来自博客园“小溪的博客”,若非声明均为原创内容,请勿用于商业用途,转载请注明出处http://www.cnblogs.com/xiaoxi666/』
分类:
c++
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性