C++ 字符串


C++ 字符串

C++ 字符串是一种操作字符序列的数据类型,可以表示任何文本数据。在C++中,字符串可以用一组字符数组来表示,也可以使用 string 类型来表示。C++字符串有许多函数和操作,以便于处理和操作。

字符串初始化

字符串的初始化有多种方式:

  1. 使用字符数组初始化字符串

    char arr[] = "hello";
    

    这样就定义了一个字符数组,并初始化为 hello,可以将其转换为一个字符串对象:

    string str(arr);
    
  2. 使用 string 类型初始化字符串

string str = "hello";
  1. 使用标准输入初始化字符串
string str;
cin >> str;

如果读入的字符串中含有空格,则只会读取到空格前的部分。

如果需要读入整行字符串,则可以使用 getline 函数:

getline(cin, str);

字符串拼接

C++ 中的字符串拼接有多种方式:

  1. 使用 + 运算符拼接
string str1 = "hello", str2 = "world";
string str3 = str1 + " " + str2;
  1. 使用 += 运算符拼接
string str1 = "hello", str2 = "world";
str1 += " ";
str1 += str2;
  1. 使用 append 函数拼接
string str1 = "hello", str2 = "world";
str1.append(" ");
str1.append(str2);

字符串查找和替换

C++ 中的字符串查找和替换有多种函数:

  1. find 函数

find 函数用于在字符串中查找子串,返回子串第一次出现的位置。如果没有找到,则返回 string::npos

string str1 = "hello world", str2 = "world";
size_t pos = str1.find(str2);
if (pos != string::npos) {
    cout << "子串第一次出现的位置为:" << pos << endl;
} else {
    cout << "未找到" << endl;
}
  1. rfind 函数

rfind 函数与 find 函数类似,只不过它从字符串末尾开始查找。

  1. replace 函数

replace 函数用于将子串替换为另一个字符串。

string str1 = "hello world", str2 = "world";
str1.replace(str1.find(str2), str2.length(), "C++");
cout << str1 << endl; // "hello C++";

字符串大小写转换

C++ 中的字符串大小写转换有多种函数:

  1. toupper 函数

toupper 函数将字符串中的小写字母转换为大写字母。

string str = "hello world";
for (int i = 0; i < str.length(); i++) {
    str[i] = toupper(str[i]);
}
cout << str << endl; // "HELLO WORLD";
  1. tolower 函数

tolower 函数将字符串中的大写字母转换为小写字母。

string str = "HELLO WORLD";
for (int i = 0; i < str.length(); i++) {
    str[i] = tolower(str[i]);
}
cout << str << endl; // "hello world";

字符串分割

C++ 中的字符串分割有多种方式:

  1. 使用 findsubstr 函数实现
string str = "hello,world";
vector<string> strs;
int pos = 0;
string delimiter = ",";
string token;
while ((pos = str.find(delimiter)) != string::npos) {
    token = str.substr(0, pos);
    strs.push_back(token);
    str.erase(0, pos + delimiter.length());
}
strs.push_back(str);
  1. 使用 stringstream 类实现
string str = "hello,world";
vector<string> strs;
stringstream ss(str);
string token;
while (getline(ss, token, ',')) {
    strs.push_back(token);
}

总结

C++ 字符串支持各种字符串操作和处理,如初始化,拼接,查找和替换,大小写转换和分割等。在实际开发中,需要根据需求选择合适的操作函数。