C++字符串的处理详解
在C++中,字符串是一种很重要的数据类型。可以使用以下两种方法来处理字符串:
1. 使用C风格的字符串处理方式
C风格的字符串其实是一个字符数组,字符串的结束标志是'\0'。
字符串的定义:
char str[10]; //定义一个长度为10的字符数组作为字符串
字符串的输出:
printf("%s", str); //使用%s输出字符串
字符串的输入:
scanf("%s", str); //使用%s输入字符串
需要注意的是,使用%s输入字符串时,如果输入的字符串长度超过了数组的长度,则会发生内存溢出问题。因此,在输入字符串时,可以使用以下方式来避免此问题:
char str[10];
scanf("%9s", str); //限制输入的字符串长度不超过9
2. 使用C++中的string类
string类是C++标准库中的一个类,可以用来处理字符串。
字符串的定义:
#include <string>
using namespace std;
string str; //定义一个字符串
字符串的输出:
cout << str; //使用cout输出字符串
字符串的输入:
getline(cin, str); //使用getline函数输入字符串
需要注意的是,如果需要输入多个字符串,则可以使用以下方式:
#include <vector>
using namespace std;
vector<string> strs(3); //定义一个长度为3的字符串数组
for (int i = 0; i < 3; i++) {
getline(cin, strs[i]); //使用getline函数输入字符串
}
以上是C++字符串的处理方式,下面将讲解如何去掉字符串中的空格。
去掉字符串中的空格
1. 使用C++中的string类
#include <string>
using namespace std;
void trim(string &str) {
int i = 0, j = str.size() - 1;
//从前往后找到第一个不是空格的字符
while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
i++;
}
//从后往前找到第一个不是空格的字符
while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
j--;
}
//截取有效部分的字符串
str = str.substr(i, j - i + 1);
}
2. 使用C风格的字符串处理方式
void trim(char *str) {
int len = strlen(str), i = 0, j = len - 1;
//从前往后找到第一个不是空格的字符
while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
i++;
}
//从后往前找到第一个不是空格的字符
while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
j--;
}
//截取有效部分的字符串
int k = 0;
for (int m = i; m <= j; m++) {
str[k++] = str[m];
}
str[k] = '\0';
}
以上两种方法实现的功能是相同的,在此不再赘述,下面给出一个使用C++中的string类去掉字符串中空格的示例:
#include <iostream>
#include <string>
using namespace std;
void trim(string &str) {
int i = 0, j = str.size() - 1;
//从前往后找到第一个不是空格的字符
while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
i++;
}
//从后往前找到第一个不是空格的字符
while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
j--;
}
//截取有效部分的字符串
str = str.substr(i, j - i + 1);
}
int main() {
string str;
getline(cin, str);
trim(str); //去掉字符串中的空格
cout << str << endl;
return 0;
}
输入一个有空格的字符串,输出去掉空格后的字符串。
示例输入1:
hello world
示例输出1:
hello world
下面给出一个使用C风格的字符串处理方式去掉字符串中空格的示例:
#include <stdio.h>
#include <string.h>
void trim(char *str) {
int len = strlen(str), i = 0, j = len - 1;
//从前往后找到第一个不是空格的字符
while (i <= j && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' || str[i] == '\r')) {
i++;
}
//从后往前找到第一个不是空格的字符
while (j >= i && (str[j] == ' ' || str[j] == '\t' || str[j] == '\n' || str[j] == '\r')) {
j--;
}
//截取有效部分的字符串
int k = 0;
for (int m = i; m <= j; m++) {
str[k++] = str[m];
}
str[k] = '\0';
}
int main() {
char str[100];
gets(str);
trim(str); //去掉字符串中的空格
printf("%s\n", str);
return 0;
}
输入一个有空格的字符串,输出去掉空格后的字符串。
示例输入2:
hello world
示例输出2:
hello world
以上就是C++字符串的处理详解,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++字符串的处理详解 - Python技术站