[c++] 用cin输入变量的值时,如何以逗号作为分隔符

参考:https://blog.csdn.net/xufan0001/article/details/70187836

参考:https://blog.csdn.net/qq_15013233/article/details/50654965

参考:https://blog.csdn.net/weixin_35520787/article/details/117219112

1、C/C++中的类型转换函数(区分类中的类型转换构造函数):

头文件:C中stdlib.h  C++中cstdlib

atof(将字符串转换成浮点型数)

atoi(将字符串转换成整型数)

atol(将字符串转换成长整型数)

strtod(将字符串转换成浮点数)

strtol(将字符串转换成长整型数)

strtoul(将字符串转换成无符号长整型数)

toascii(将整型数转换为合法的ASCII码字符)

toupper(将小写字母转换成大写字母)

tolower(将大写字母转换成小写字母)

2、默认的输入是以空格、tab、换行符作为分隔符的,但如果要输入一组数据,

以逗号或者别的字符作为分隔符是怎么办呢?

我将其分为两种情况:

1、如果输入的一组类型都相同的数值型

那么可以在输入的时候,用一个字符去接收分隔符

例如:

int a,b,c,d;

char sep;

cin>>a>>sep>>b>>sep>>c>>sep>>d;

输入:52,53,56,57

2、如果输入的一组类型不相同

那么就必须利用类型转换函数(这些数据中的字符不能包含分隔符)

例如:

string name;

int age;

string schnum;

int a;

getline(cin,name,',');

getline(cin,a,',');

getline(cin,schnum);

age=atoi(a);
 

---------------------------------

输入:Jack,18,2014223355

3、strtok 指针字符(自定义符号集)分割 字符串的字符数组。 

/*
    输入一连串数字,数字之间逗号隔开,把数字存到数组或者向量里。
*/
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>

using namespace std;

int main()
{
    string str_input;
    cout<<"输入一串以逗号为分隔符的数字字符串:"<<endl;
    while(cin>>str_input)
    {
        vector<int> nums;
        // string->char *
        char *s_input = (char *)str_input.c_str();
        const char * split = ",";
        // 以逗号为分隔符拆分字符串
        char *p = strtok(s_input, split);

        int a;
        while(p != NULL)
        {
            // char * -> int
            sscanf(p, "%d", &a);
            nums.push_back(a);
            p=strtok(NULL, split); //再次调用要把s设成NULL。
        }

        cout<<"输出得到的数字:"<<endl;
        for(a = 0; a < nums.size(); a++)
        {
            cout<<nums[a]<<endl;
        }
    }
    return 0;
}
char *names,*numbers;
names=new char[20];
char c;
numbers=new char[20];
cin.getline(names,15,',');//names是指向字符串的指针,15代表了能够读入的输入字符的个 //数包括数组最后的结束符,逗号代表遇到逗号字符时自动停止读入。
cin>>ages>>c;
cin.getline(numbers,10,','),
cin>>grad1>>c>>grad2>>c>>grad3>>c>>grad4;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心心喵

喵喵(*^▽^*)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值