29 C++字符串
字符串是字符的集合。C ++编程语言中通常使用两种类型的字符串:(1)作为字符串类对象的字符串(标准C ++库字符串类);(2)C字符串(C风格的字符串)。
一、C 风格字符串
在C编程中,字符集合以数组的形式存储,C++编程也支持这种形式。因此,它称为C 风格字符串(C-string)。c -string是以null字符结尾的char类型的数组,即\0 (null字符的ASCII值为0)。
如何定义一个C字符串?
char str[] = "C++";
在上面的代码中,str是一个字符串,它包含4个字符。虽然“c++”有3个字符,但是null字符\0被自动添加到字符串的末尾。
定义字符串的其它方法:
char str[4] = "C++";
char str[] = {'C','+','+','\0'};
char str[4] = {'C','+','+','\0'};
与数组一样,可以不需要使用为字符串分配的所有空间。例如:
char str[100] = "C++";
示例1:使用C++字符串读取单词
C++程序显示用户输入的字符串。
#include <iostream>
using namespace std;
int main()
{
char str[100];
cout << "输入字符串: ";
cin >> str;
cout << "您输入了: " << str << endl;
cout << "\n输入另一个字符串: ";
cin >> str;
cout << "您输入了: "<<str<<endl;
return 0;
}
输出结果
输入字符串: C++
您输入了: C++
输入另一个字符串: Programming is fun.
您输入了: Programming
请注意,在第二个示例中,仅显示“Programming”,而不是“Programming is fun.”。这是因为提取运算符>>与C语言中scanf()方法一样,认为空格“ ”具有终止字符。
示例2:C++字符串以读取一行文本
C++程序读取并显示用户输入的整行。
#include <iostream>
using namespace std;
int main()
{
char str[100];
cout << "输入一个字符串: ";
cin.get(str, 100);
cout << "您输入了: " << str << endl;
return 0;
}
输出结果
输入一个字符串: Programming is fun.
您输入了: Programming is fun.
要读取包含空格的文本,可以使用cin.get函数。该函数有两个参数,第一个参数是字符串的名称(字符串的第一个元素的地址),第二个参数是数组的最大容量。在上面的程序中,str是字符串的名称,100是数组的最大容量。
c字符串有专门的处理函数strcat、strlen等,所在的库文件为string.h,编程要用这些字符串处理函数需#include<string.h>
二、C++的String 类与字符串对象
C++ 标准库提供了 string 类类型,用于创建一个用于保存字符串的字符串对象。与使用char数组不同,字符串对象没有固定的长度,可以根据需要进行扩展。
示例3:使用字符串数据类型的C++字符串
#include <iostream>
using namespace std;
int main()
{
//声明一个字符串对象
string str;
cout << "输入字符串: ";
getline(cin, str);
cout << "您输入了: " << str << endl;
return 0;
}
输出结果
输入字符串: Programming is fun.
您输入了: Programming is fun.
在此程序中,str声明了一个字符串。然后从用户询问字符串。
除了使用cin>>或cin.get()函数外,还可以使用getline()来获取输入的文本行。getline()函数将输入流作为第一个参数,cin和str作为要存储的行的位置。
示例:将字符串传递给函数
字符串以类似的方式传递给函数,数组也可以传递给函数。
#include <iostream>
using namespace std;
void display(char *);
void display(string);
int main()
{
string str1;
char str[100];
cout << "输入字符串: ";
getline(cin, str1);
cout << "输入另一个字符串: ";
cin.get(str, 100, '\n');
display(str1);
display(str);
return 0;
}
void display(char s[])
{
cout << "输入的字符数组为: " << s << endl;
}
void display(string s)
{
cout << "输入的字符串是: " << s << endl;
}
输出结果
输入字符串: Programming is fun.
输入另一个字符串: Really?
输入的字符串是: Programming is fun.
输入的字符数组为: Really?
在上面的程序中,要求输入两个字符串。它们分别存储在str和str1中,其中str是一个char数组,而str1是一个string对象。这里有两个函数display(),它们将字符串输出到字符串中。这两个函数之间的唯一区别是参数,第一个display()函数将char数组作为参数,而第二个函数将string作为参数。此过程称为函数重载。
学习参考
1、【C进阶】——字符串操作函数strlen、strcpy、strcat、strcmp
2、C语言库函数的实现(strlen strcpy strcmp strcat strstr)
3、strlen,strcpy,strcat,strcmp详解
4、C语言中的字符串处理库函数介绍与实现
5、【C++】string类的使用
6、string的学习和使用

浙公网安备 33010602011771号