``getchar()获取单个字符` `putchar()输出单个字符 ` `isdigit(x)判断是否是数字` `islower(x)判断是否是小写` `isupper(x)判断是否是大写` `isalpha(x)判断字母` `puts(str)多个字符存到数组` `gets(str)输入一整行字符串(包括空格,已弃用)`
`fgets(str,100,stdin)获取一整行,100长度
` `strcat(str1,str2);把str2街道str2后面`
`strcmp(str1,str2);比较两个字符串,正数:1大 0:一样 负数:2大` `strlen(str);返回str的长度` `字符串:`
`getline(cin;str);获取一整行 回车结尾` `str.substr(i,2);获取子串,从i开始长度为2的子串`
`str.find(str2);在string中查找str2,返回所在的下标,没找到返回string::npos`
`str.rfind(str2);同find,但从右向左找`
`str.erase(i,1);从i开始,删除长度为1的子字符串`
`str.insert(i,str2);在i的位置前,插入str2`
`str.size();获取str的长度`
`str.c_str()获取str对应的char[]`
`str.begin();获取str的首地址`
`str.end()获取str的尾地址`
`内建函数:`
`__builtin_ ffs(x) 返回x中最后一个为1的位置(12-1100)-3位置`
`__builtin_popcount(x) x中1的个数(1100) -2`
`__builtin_ctz(x) 末尾0的个数(11000) -3`
`__builtin_clz(x) 前导0的个数 0000000000000000000000000 01100(28)`
`__builtin_parity(x) x中1的奇偶性,1有偶数个返回0,否则返回1
```none
将字符串转成数字:
1.借用bitset将01字符串变成无符号整数
string a = "1001";
bitset<64> b(string("1001"))
bitset<64> b(a)
cout<<b.to\_ulong()
2.用sscanf() 函数把字符数组里面的字符串打印到数值变量里面
int buf;
sscanf("123456","%d",&buf)
printf("%d\\n",buf)
3.用sprintf()把数据打印到字符数组里面
char s[100]
sprintf(s,"%d",123)
4.用直接的方式
string s = "1234";
int n = 0;
for(int i = 0;i<4;i++){
n = n\*10+s[i]-'0';
}
5.一般用法
char buf[512] = ;
sscanf("123456 ", "%s", buf);
printf("%s\\n", buf);
结果为:123456
1. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", buf);
printf("%s\\n", buf);
结果为:12342. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\\n", buf);
结果为:123456
3. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\\n", buf);
结果为:123456abcdedf
4. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\\n", buf);
结果为:123456abcdedf
5、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将
非'@'的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%\*[^/]/%[^@]", buf);
printf("%s\\n", buf);
结果为:12DDWDFF
6、给定一个字符串"hello, world",仅保留"world"。(注意:“,”之后有一空格)
sscanf("hello, world", "%\*s%s", buf);
printf("%s\\n", buf);
结果为:world P.S. %\*s表示第一个匹配到的%s被过滤掉,即hello,被过滤了,如果没有空格则结果为
NUL