1. 输入数据方式
cin>>a>>b;
char a[10];
cin.getline(a,5);
char a,b,c;
cin.get(a);cin.get(b);cin.get(c);
输入:
AB
CD
那么a的值为‘A‘,b的值为‘B‘,c的值为‘\n\
getline(istream &in, string &s)
在头文件<iostream>中声明了getline函数:
istream::getline
istream&getline (char* s, streamsize n );
istream&getline (char* s, streamsize n, char delim )
std::cin.getline (title,256);
C++中还定义了一个在std名字空间的全局函数,因为这个getline函数的参数使用了string字符串,所以声明在了<string>头文件中了。
istream&getline ( istream& is, string& str, char delim );
istream&getline ( istream& is, string& str );
std::getline (std::cin,name);
sort函数按从大到小排序,比较函数如下:
int comp(constint &a,const int &b)
{
returna>b;
}
Map使用find()函数确定是否包含相关key,如果返回值不等于map.end()就代表找到了。
2.字符串逆序
stringstr("cvicses");
strings(str.rbegin(),str.rend());
cout <<s<<endl;
3.字符串分割
头文件:#include <string.h>
定义函数:char * strtok(char *s, const char *delim);
函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。
#include<string.h> main(){ char s[] = "ab-cd : ef;gh:i-jkl;mnop;qrs-tu: vwx-y;z"; char *delim = "-: "; char *p; printf("%s ", strtok(s, delim)); while((p = strtok(NULL, delim))) { printf("%s ", p); printf("\n"); } }
执行结果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z //-与:字符已经被\0 字符取代
头文件:#include <string.h>
strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:
char*strstr( char *str, char * substr );
参数说明:str为要检索的字符串,substr为要检索的子串。
返回值:返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
int main(int argc,char **argv) { char *haystack="aaa||a||bbb||c||ee||"; char *needle="||"; char* buf = strstr( haystack, needle); while( buf != NULL ) { buf[0]='\0'; printf("%s\n ", haystack); haystack =buf + strlen(needle); /* Get nexttoken: */ buf =strstr(haystack, needle); } return 0; }
用STL进行字符串的分割
涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find ( const string& str, size_t pos = 0 )const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:找到的话返回第一次出现的位置,否则返回string::npos
2、substr函数
原型:string substr ( size_t pos = 0, size_t n = npos )const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos)
返回值:子字符串
实现如下:
//字符串分割函数
std::vector<std::string> split(std::stringstr,std::string pattern) { std::string::size_type pos; std::vector<std::string> result; str+=pattern;//扩展字符串以方便操作 intsize=str.size(); for(int i=0;i<size; i++) { pos=str.find(pattern,i); if(pos<size) { std::string s=str.substr(i,pos-i); result.push_back(s); i=pos+pattern.size()-1; } } return result; }