参考: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;