- stoi(str)
将string转换为数字串,直到遇到第一个非法字符为止。需要首字符是数字或者空格,否则返回错误。
int main()
{
char ss[]="_5";
int a = stoi(ss);
cout << a+10;
return 0;
}
//out
//运行时异常
- atoi(str)
将string转换为数字串,直到遇到第一个非法字符为止。首字符为非法字符时,输出0。
int main()
{
char ss[]="_5";
int a = atoi(ss);
cout << a+10;
return 0;
}
//out
//10
- #include < cctype>
isalnum() 如果参数是字母数字,即字母或数字,该函数返回true
isalpha() 如果参数是字母,该函数返回true
isblank() 如果参数是空格或水平制表符,该函数返回true
iscntrl() 如果参数是控制字符,该函数返回true
isdigit() 如果参数是数字(0~9),该函数返回true
isgraph() 如果参数是除空格之外的打印字符,该函数返回true
islower() 如果参数是小写字母,该函数返回true
isprint() 如果参数是打印字符(包括空格),该函数返回true
ispunct() 如果参数是标点符号,该函数返回true
isspace()
如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符,该函数返回true
isupper() 如果参数是大写字母,该函数返回true
isxdigit() 如果参数是十六进制的数字,即0~9、af、AF,该函数返回true
tolower() 如果参数是大写字符,则返回其小写,否则返回该参数
toupper() 如果参数是小写字母,则返回其大写,否则返回该参数
- sscanf和sprintf
首先来看
scanf("%d",&n);//读入一个整型数据
printf("%d",n);//输出一个整型数据
他们可以写成
scanf(screen,"%d",&n);//从屏幕读入一个整型数据
printf(screen,"%d",n);//向屏幕输出一个整型数据
sscanf和sprintf和上面的使用方法一致,从左边的变量中按照格式读入或者输出字符串。
char str[100];
sscanf(str,"%d",&n);
sprintf(str,"%d",n);
- 字符串分割
参考此处
1、使用strtok函数
char * res[10];
int main()
{
char s[] = "Hello Nice, to meet ,* you";
/*
** 用 空格,星号,逗号进行分割
** 无论多少个,都会被当作一个key
*/
const char* d = " *,"; //分割依据
char *p; //保存每次分割结果
p = strtok(s, d);
//每个被分割出来的单词压入res数组中
int index = 0;
while (p)
{
res[index++] = p;
cout << p << endl;
p = strtok(NULL, d);
}
for (int i = 0; i < index; i++) {
printf("%s\n", res[i]);
}
return 0;
}
2、使用find和substr函数
/*
*str:要分割的字符串
*pattern:分割依据
*result:分割结果
*/
//const保证不改变原串,&不用创建新的字符串
vector<string> splitString(const string& str,const string& pattern)
{
vector<string> result;
//string::size_type类型,left:左边界位置 right:右边界位置
string::size_type left, right;
right = str.find(pattern);
left = 0;
while(right != string::npos)
{
//以免字符串首部就是分割依据,压入长度为0的字符串
if(right-left)
{
//压入起始位置为left,长度为(right-left)的字符串
result.push_back(str.substr(left, right-left));
}
left = right + pattern.size(); //右边界右移分割依据的长度,作为新的左边界
right = str.find(pattern, left); //从left这个位置开始find
}
//退出循环时,左边界不是最后一个元素
if(left != str.length())
{
result.push_back(str.substr(left));
}
return result;
}