C++中有两种风格字符串,分别是:
- C++风格字符串
- C风格字符串
它们各自的声明方式如下:
void main(){
string a = "hello"; //C++风格
char *b = "hello"; //C风格 字符串数组
char c[] = "hello"; //C风格 字符串常量
const char* d[]="hello" //c风格
}
二、C风格字符串
C风格字符串声明:
字符串数组:
char c[20(可省)]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'};
char str[30(可省)] = {"c.biancheng.net"}; //大括号可以省
字符串常量:
char *str = "abdc";
或者
char *str;
str = "abcd";
//C语言有两种表示字符串的方法,一种是字符数组,另一种是字符串常量,它们在
内存中的存储位置不同,使得字符数组可以读取和修改,而字符串常量只能读取不能修改。
这里需要留意一个坑,字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了。请看下面的例子:
#include#include int main() { char str[7]; //str = "abc123"; //错误 //正确 str[0] = 'a'; str[1] = 'b'; str[2] = 'c'; str[3] = '1'; str[4] = '2'; str[5] = '3'; std::cout < 参考资料:C语言字符数组和字符串详解
C语言字符串指针(指向字符串的指针)详解
三、C++风格字符串C++ 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。
#include#include using namespace std; int main() { string s1;//变量 s1 只是定义但没有初始化,编译器会将默认值赋给 s1,默认值是"",也即空字符串。 string s2 = "c plus plus";//变量 s2 在定义的同时被初始化为"c plus plus"。与C风格的字符串不同,string 的结尾没有结束标志' '。 string s3 = s2;//变量 s3 在定义的时候直接用 s2 进行初始化,因此 s3 的内容也是"c plus plus"。 string s4 (5, 's');//变量 s4 被初始化为由 5 个's'字符组成的字符串,也就是"sssss"。 return 0; } 参考文献:C++ string详解,C++字符串详解
C++ 字符串与字符数组 详解_ZeroZone零域的博客-CSDN博客_c++字符串数组



