注意,不能使用字符或者整数去初始化字符串。
常见的 string 类构造函数有以下几种形式:
string strs //生成空字符串
string s(str) //生成字符串str的复制品
string s(str, stridx) //将字符串str中始于stridx的部分作为构造函数的初值
string s(str, strbegin, strlen) //将字符串str中始于strbegin、长度为strlen的部分作为字符串初值
string s(cstr) //以C_string类型cstr作为字符串s的初值
string s(cstr,char_len) //以C_string类型cstr的前char_len个字符串作为字符串s的初值
strings(num, c) //生成一个字符串,包含num个c字符
strings(strs, beg, end) //以区间[beg, end]内的字符作为字符串s的初值
~string() //销毁所有内存,释放内存
如果字符串只包含一个字符,使用构造函数对其初始化时,使用以下两种形式比较合理:
std::string s('x'); //错误
std::string s(1, 'x'); //正确
std::string s("x"); //正确
C_string 一般被认为是常规的 C++ 字符串。目前,在 C++ 中确实存在一个从 const char * 到 string 的隐式型别转换,却不存在从 string 对象到 C_string 的自动型别转换。对于 string 类型的字符串,可以通过 c_str() 函数返回该 string 类对象对应的 C_string。#include <iostream> #include <string> using namespace std; int main () { string str ("12345678"); char ch[ ] = "abcdefgh"; string a; //定义一个空字符串 string str_1 (str); //构造函数,全部复制 string str_2 (str, 2, 5); //构造函数,从字符串str的第2个元素开始,复制5个元素,赋值给str_2 string str_3 (ch, 5); //将字符串ch的前5个元素赋值给str_3 string str_4 (5,'X'); //将 5 个 'X' 组成的字符串 "XXXXX" 赋值给 str_4 string str_5 (str.begin(), str.end()); //复制字符串 str 的所有元素,并赋值给 str_5 cout << str << endl; cout << a << endl ; cout << str_1 << endl; cout << str_2 << endl; cout << str_3 << endl; cout << str_4 << endl; cout << str_5 << endl; return 0; }程序运行结果为:
12345678
12345678
34567
abcde
XXXXX
12345678
本文链接:http://task.lmcjl.com/news/15850.html