字符数组 & 字符串
字符数组
- char c1[] = "ch111"; \\字符串字面值初始化。!!!字符串字面值末尾处有个\0空字符,也会被copy到字符数组中去,记得预留空间。
- char c1[ ] ={'c', 'b', 'n', 'm'}; \\列表初始化
初始化string对象的方式:
- string s1; \\空串
- string s2(s1); \\s2是s1的副本
- string s2=s1; \\同上
- string s1("value"); \\ 字面值初始化??
- string s1="value"; \\拷贝初始化
- string s1(3, 'c'); \\3个c组成的串
string 的一些常用操作:
1. toCharArray()函数: 将字符串对象中的字符转换为一个字符数组;例如
String s1="abcd"; char[] ch=s1.toCharArray();
2. string::nops 用来表示不存在的位置,可以用在遍历string时,到结尾结束的截止条件。
string str; pos=str.find_first_of("h"); if(pos!=string::npos) {.. .... }
//npos是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type
3. substr(start, length)函数:
string s("12345asdf");
string a=s.substr(0,5); //从0开始的5个字符
默认时的长度为从开始位置到尾,只有一个参数时,可以理解为从p开始的到结尾的子字符串。
4 . cctype头文件中的函数:返回bool值
isalpha(c); //c为字母;
isdigit(c) //c is 数字
isalnum(c) //c 为字母或数字
5. c_str()函数 将string转为const char *类型。一般和strcpy配合使用。eg:
string s("hello");
//char *a;
char b[20];
strcpy_s(b, s.c_str());
cout<<b<<endl;
6. getline()函数常用:
(1) istream& getline (istream& is, string& str, char delim); istream& getline (istream&& is, string& str, char delim); (2) istream& getline (istream& is, string& str); istream& getline (istream&& is, string& str);
可以用来写c++中没有的split函数,如下:
void split(const string &s, vector<string> &ret, const char &c) { stringstream ss(s); string t; while (getline(ss, t, c)) ret.push_back(t); }
c是分隔符,把分隔符左右的给string给存到ret中去。