1天4更不会累~
在 C++ 语言中,字符和字符串是非常重要的数据类型。以下是关于字符和字符串的相关知识:
- 字符(Char): char 是 1 字节长的基本数据类型,用于存储 ASCII 码字符。在 C++ 中,可以用单引号来表示字符,例如:
char ch = 'A';
- 字符串(String): 在 C++ 中,字符串是 char 类型的数组,其中最后一个元素是 '\0',表示字符串的结束。以下是一些关于字符串的示例:
char str1[] = "Hello World!"; // 定义一个字符串
char str2[10]; // 定义一个空的字符串
str2[0] = 'H'; // 向 str2 中添加字符
str2[1] = 'i'; // 向 str2 中添加字符
str2[2] = '\0'; // 在 str2 的结尾添加 '\0'
- 字符串相关函数: C++ 中还有许多有用的字符串相关函数,例如 strlen() 可以获取字符串的长度,strcpy() 可以复制一个字符串到另一个字符串中,strcat() 可以将两个字符串连接在一起,strcmp() 可以比较两个字符串是否相等等等。
char str1[] = "Hello";
char str2[] = "World";
char str3[12];
int len;
// 复制 str1 到 str3
strcpy(str3, str1);
cout << "strcpy(str3, str1) : " << str3 << endl;
// 连接 str1 和 str2
strcat(str1, str2);
cout << "strcat(str1, str2) : " << str1 << endl;
// 获取 str1 的长度
len = strlen(str1);
cout << "strlen(str1) : " << len << endl;
// 比较 str1 和 str2
if(strcmp(str1, str2) == 0)
cout << "str1 和 str2 相等" << endl;
else
cout << "str1 和 str2 不相等" << endl;
懂了吧......
什么?
什么?
没懂?
(水一点换行)
还是那句话:你必须学费
C++中的字符串是一组字符数组,可以使用字符串类(std::string)或字符数组来表示。
可以使用以下语法定义字符串:
char str[] = "Hello World";
std::string str = "Hello World";
C++中的字符串支持许多操作,例如:
- 连接字符串:使用加号操作符(+)或append()函数。
- 截取子字符串:使用substr()函数。
- 获取字符串长度:使用size()或length()函数。
- 比较字符串:使用compare()函数。
- 查找子字符串:使用find()或rfind()函数。
另外,字符串中的字符可以使用下标操作符([])或at()函数进行访问。
好的,现在开始来一点提升
在 C++ 语言中,字符串提升指的是将字符数组或字符指针作为参数传递给函数时,自动将其转换为指向其首元素的指针。
例如:
char str[] = "Hello";
printf("%d", sizeof(str)); // 输出 6
在这个例子中,str
是一个字符数组,它包含 6 个元素(包括一个空字符作为结尾)。当我们将 str
作为参数传递给函数时,它会被自动转换为指向其首元素的指针。
void foo(char* s) {
printf("%d", sizeof(s)); // 输出 4 或 8,取决于指针的大小(32 位或 64 位系统)
}
foo(str);
在这个例子中,我们将 str
作为参数传递给 foo
函数。虽然 foo
函数声明的参数类型是 char*
,但我们实际传递的是 str
数组,它会被自动转换为指向其首元素的指针。因此,sizeof(s)
的值取决于指针的大小,而不是 str
数组的大小。
好了好了,我的手d了(;´д`)ゞ
再见......