字符数组 & 字符串

字符数组

  1.  char c1[] = "ch111";        \\字符串字面值初始化。!!!字符串字面值末尾处有个\0空字符,也会被copy到字符数组中去,记得预留空间。
  2. char c1[ ] ={'c', 'b', 'n', 'm'};    \\列表初始化 

初始化string对象的方式:

  1. string s1;                \\空串
  2. string s2(s1);          \\s2是s1的副本
  3. string s2=s1;                \\同上
  4. string s1("value");         \\ 字面值初始化??
  5. string s1="value";           \\拷贝初始化
  6. 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中去。 

posted @ 2017-12-15 22:43  东风知我欲山行  阅读(318)  评论(0编辑  收藏  举报