C++读取多行数字然后读取该行各个数字

来源:互联网 发布:手机淘宝店铺模板复制 编辑:程序博客网 时间:2024/05/21 22:46

问题:

比如让循环读取一行数字“1 2 3;4 5 6;7 8 9;”

并且取出各个数字1,2,3,4,5,6,7,8,9


说明:输入只有一行,以‘;’为分隔符,其实是三行数字,但是注意最后结尾有一个‘;’(如果没有这个分号,代码将发生很大变化)。每行数字以空格分割。


解决:使用C++里面的getline和sstream。代码如下。

#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int main(){
        string line;
        string item;
        while(getline(cin,line,';')){
                istringstream items(line);
                while(items>>item){
                        cout<<item<<endl;
                }
        }
        return 0;

}


代码说明:

(1)getline从cin或者文件中读取整行字符串,getline(cin,line,';')的第三个参数表示getline的终止符。

(2)istringstream 必须包括头文件#include<sstream>,并且默认只能以空格、换行、制表符作为分隔符,不能想getline指定分隔符。


PS:如果输入变为:(最后一个分号';'没有了)

比如让循环读取一行数字“1 2 3;4 5 6;7 8 9”

则读取程序就无法再使用getline指定分割符实现了分行读取了(因为最后一行没有‘;’,程序无法读取最后一行):这个时候的思路是:

使用getline(cin,line)读取“1 2 3;4 5 6;7 8 9”作为一行字符串到line中,然后自己写个程序将line拆分为多个string,对每个string进行istringstream 读取。OK。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信重新登录后东西全没了怎么办 宝宝吃鸡蛋过敏全身起红疹怎么办 180在产蛋鸡因断鸡减产怎么办 住友39熔接机熔接损耗大怎么办 支付宝实名认证刷脸失败怎么办 支付宝注册刷脸不是本人怎么办 小学科学只考88分中学怎么办 收银机关机时才上传数据是怎么办 刚做的系统玩cf卡屏怎么办 办健康证的资料掉了怎么办 刚刚办得的健康证掉了怎么办 房子都过户了银行贷不了款怎么办 我要办大病迁出应该怎么办啊? 遗产继承后户口没地迁出怎么办 安徽蒙城怎么办去韩国的签证的 夜间有人私自收停车费应该怎么办 上次摸不到环尾丝这次摸到了怎么办 法院判决书下来后对方不给钱怎么办 法院判决书下来了钱还保全么怎么办 深圳路边泊车不知道泊车编号怎么办 当事人进拘留所了我的工资怎么办 昆明公租房住满5年后怎么办 昆明公租房房子到期缴纳金怎么办 看守所犯人银行卡里钱没用完怎么办 中国邮政迟迟没有把信件寄到怎么办 拘留15天放出来还不肯还钱怎么办 人死在拘留所不让看监控怎么办 家人吸毒可他又不愿强戒怎么办 容留他人吸毒时签了强戒怎么办 拘留后发现被拘留是人大代表怎么办 执行局要拘留人找不到人怎么办 开设赌场罪拘留37天了该怎么办 对治安处罚光罚款不拘留怎么办 打架和解后警察不给消案怎么办 12个人片诈骗刑拘了28天怎么办 交警拘留几天后还是没钱赔偿怎么办 平安车主信用卡车牌号填错了怎么办 起诉借钱的人逮起来了怎么办 在法院查不到坐牢人的档案怎么办 人被冤枉敲诈勒索进看守所了怎么办 打架被拘留孩子怎么办三周了