一篇文章带你了解C++语法基础——字符串
1、字符串的定义与声明
字符串是一种字符数组,存储在 char 类型数组中。在 C++ 语言中,字符串可以通过以下两种方式进行定义:
- 字符数组定义,例如:
char str[] = "Hello World";
该定义方式定义了一个长度为12(第13个字符是 \0)的字符数组,并将字符串 "Hello World" 存储在其中。
- C++ 中的 string 类型
#include <string>
string str = "Hello World";
该定义方式定义了一个 string 类型的变量,并将字符串 "Hello World" 存储在其中。
2、字符串的操作
2.1 字符串的输出
通过 cout 对象可以方便地输出一个字符串变量。使用 cout 输出 string 类型的字符串变量时,可以直接使用流插入符号(<<),例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello World";
cout << str << endl;
return 0;
}
输出结果为:
Hello World
注意,输出字符串时不需要使用循环遍历字符数组。
2.2 字符串的输入
可以使用 cin 对象输入一个字符串,使用流提取符号(>>)输入。例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
cout << str << endl;
return 0;
}
运行程序后,在控制台输入字符串,回车之后会输出输入的字符串。
需要注意的是,cin 对象默认以空格、制表符、换行符为输入分隔符,因此只有输入的第一个单词(不包括空格、制表符和换行符)被存储在 str 变量中。
2.3 字符串的长度
C++ 中 string 类型提供了一个 length 函数来获取字符串的长度。例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello World";
cout << "The length of str is " << str.length() << endl;
return 0;
}
输出结果为:
The length of str is 11
strlen 函数也可以获得字符数组的长度。例如:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[] = "Hello World";
int len = strlen(str);
cout << "The length of str is " << len << endl;
return 0;
}
输出结果同上。
2.4 字符串的拼接
可以使用 + 运算符或 append 函数将两个字符串拼接起来。例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 = "Hello";
string str2 = "World";
string str3 = str1 + " " + str2;
cout << str3 << endl;
str1.append(str2);
cout << str1 << endl;
return 0;
}
输出结果为:
Hello World
HelloWorld
需要注意的是,在通过 append 函数将两个字符串进行拼接时,会修改原始字符串变量的值。
2.5 字符串的查找
可以使用 find 函数查找字符串中的子串。例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello World";
int pos = str.find("World");
if (pos != string::npos) {
cout << "Find the substring at position " << pos << endl;
} else {
cout << "The substring is not found." << endl;
}
return 0;
}
输出结果为:
Find the substring at position 6
如果需要查找的子串不存在,则 find 函数会返回 string::npos,表示在字符串中没找到需要查找的子串。
2.6 字符串的替换
可以使用 replace 函数替换字符串中的子串。例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello World";
string newstr = str.replace(6, 5, "China");
cout << newstr << endl;
return 0;
}
输出结果为:
Hello China
replace 函数的第一个参数为需要替换子串的起始位置,第二个参数为需要替换的子串的长度,第三个参数为替换后的新字符串。
3、示例说明
3.1 例题1
输入一个字符串,求字符串中的单词数。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin, str);
int count = 0;
bool flag = false;
for (int i = 0; i < str.length(); i++) {
if (str[i] == ' ' || str[i] == '\n' || str[i] == '\t') {
flag = false;
} else if (flag == false) {
flag = true;
count++;
}
}
cout << "The number of words is " << count << endl;
return 0;
}
3.2 例题2
输入一个字符串,将其中连续出现大于等于3次的字母分别省略到只显示3次。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin, str);
for (int i = 0; i < str.length(); i++) {
int j = i + 1;
while (j < str.length() && str[j] == str[i]) {
j++;
}
if (j - i >= 3) {
str = str.replace(i + 3, j - i - 3, "");
}
i = j - 1;
}
cout << str << endl;
return 0;
}
注意,在进行字符串的替换操作时,需要注意避免字符串变量的长度发生改变,可能会导致索引操作出错。因此,在进行字符串的替换操作时,应及时更新字符串变量的长度。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解C++语法基础–字符串 - Python技术站