主要内容 #
C++中的字符串 #
// 字符串的定义
char dashima[] = "A123*"; // 请问如何求长度,长度应该是多少?
// 字符数组的定义
char dashima[] = {'A','1','3','*'} // 请问如何求长度,长度应该是多少?
// 字符串的定义
char dsm_string[] = "A123*"; //
dsm_string = "ac"; // 【错误】
dsm_string[1] = 'a'; // 【正确】
dsm_string[100] = 'a'; // 【语法正确】,但是实际上超出了长度范围。要【特别注意】,避免这样的错误,编译时并不会提示这种错误。
// 字符数组的定义
char dsm_cArray[] = {'A','1','3','*'}
dsm_cArray = "ac"; // 【错误】
dsm_cArray[1] = 'a'; // 【正确】
dsm_cArray[100] = 'a'; // 【语法正确】,但是实际上超出了长度范围。
// 字符串的定义
char dsm_string[] = "A123*"; //
cout << dsm_string << "\n";
// 字符数组的定义
char dsm_cArray[] = {'A','1','3','*'}
cout << dsm_cArray << "\n";
请看例子,并回答输出结构【请注意理解】
// 例子 1 ----------------------------------------
char dsm_string[] = "A13*";
char dsm_cArray[] = {'A','1','3','*'};
cout << sizeof(dsm_string) << "\n"; // 5
cout << sizeof(dsm_cArray) << "\n"; // 4
cout << strlen(dsm_string) << "\n"; // 4
cout << strlen(dsm_cArray) << "\n"; // 4
// 例子 2 ----------------------------------------
char dsm_string[] = "A13*\0";
char dsm_cArray[] = {'A','1','3','*','\0'};
cout << sizeof(dsm_string) << "\n"; // 6
cout << sizeof(dsm_cArray) << "\n"; // 5
cout << strlen(dsm_string) << "\n"; // 4
cout << strlen(dsm_cArray) << "\n"; // 4
// 例子 3 ----------------------------------------
char dsm_string[] = "A13*\0A13";
char dsm_cArray[] = {'A','1','3','*','\0','A','1','3'};
cout << sizeof(dsm_string) << "\n"; // 9
cout << sizeof(dsm_cArray) << "\n"; // 8
cout << strlen(dsm_string) << "\n"; // 4
cout << strlen(dsm_cArray) << "\n"; // 4
string – 定义 #
字符串在 C++ 中很重要,而基础的 char [] 形式的字符串,在使用上不是很友好。
比如:str1、str2两个字符串,则 str1 = str2 这样的写法是【错误的】。但是使用【=】复合大多数人的习惯。
所以,后来的 C++ 中定义了一种 string 类型,来专门表示字符串。
请看例程
#include < iostream >
#include < string >
int main()
{
std::string str1("da"); // string 属于 std 名称空间
std::string str2 = "dashima";
str1 = str2; // 【正确】
return 0;
}
string 是 C++ 标准库中的【类】,类也是一种自定义的数据类型。就像我们讲过的枚举、struct结构体等,都属于自定义数据类型。
string – 输入输出 #
依然可以使用 cin 和 cout。
cin,请注意读取的时候,会忽略开头的【空格】【制表符】【换行符】,当遇到【空格】【制表符】【换行符】则停止读取。
示例程序:
#include < iostream >
#include < string >
using namespace std;
int main()
{
// 例子 1 ----------------------------------------
string str;
cout << "请输入一个字符串:\n"; // 请试一试输入:"Hello World",并尝试在开头加上空格。
cin >> str;
cout << str << "\n\n\n";
// 例子 2 ----------------------------------------
string str1, str2, str3;
cout << "请输入3个字符串,可以使用空格分隔,也可以逐行输入:\n"; // 【空格】【制表符】【换行符】都可以作为字符串的分隔。
cin >> str1 >> str2 >> str3;
cout << str1 << "\n";
cout << str2 << "\n";
cout << str3 << "\n";
return 0;
}
习题 #