一.定义字符串
C++提供了string类来定义字符串
string的特点:不需要考虑数据越界的问题,虽本质还是字符数组,但他不是以'\0'结尾,而是优化掉了'\0'
1.string在输入输出时的特点:
输出:
string方式:直接输出字符串名
std::string s = "abc";
std::cout << s << std::endl;
字符数组的方式:
占位符:“%s”
char c[] = "abc";
std::cout << c << std::endl;
printf("%s\n", c);
输入:string方式:直接输出字符串名
std::string s = "abc";
std::cin >> s;//无需考虑字符串长度问题
字符数组的方式,直接输入字符数组中(需要考虑数组越界的问题)
char c[] = "abc";
std::cin >> c;//输入字符串长度超过3则会出现错误
scanf("%s", c)
2.字符串长度
字符数组的方式,strlen(字符串函数),不包括‘\0’,返回值就是字符串长度
char c[] = "abc";
std::cout << strlen(c) << std::endl;//3
std::cout << strlen("abcd") << std::endl;//4
string方式:
字符串.length()或者字符串.size() 不包括‘\0’
std::string s = "abc";
std::cout << s.length() << std::endl;//3
std::cout << s.size() << std::endl;//3
数组元素个数表示数组的元素数量(包括'\0')
char c[] = "abc";
std::cout << sizeof(c) << std::endl;//4
char c1[10] = "abc";
std::cout << sizeof(c1) << std::endl;//10
std::string s = "abc";
std::cout << sizeof(s) << std::endl;//40 预留40的长度,长度不够会总动添加
3.字符串的访问
字符数组的访问:
char c[] = "abc";
std::cout << c[1] << std::endl;//b
c[1] = 'q';
std::cout << c << std::endl;