​C++之字符串与字符string、char

 1.1.1 string与char

  • 当需要存储和处理单个字符时,通常使用char
  • 当需要存储和处理一个或多个字符串时,通常使用string类。

string与char的声明与定义:

string a="xxxx";


char a='b';

注意:

  1. 双引号(""):

    • 双引号主要用于表示字符串。在C++中,字符串是由一系列字符组成的,以空字符'\0'结束。双引号用于定义一个字符串,例如"Hello, World!"。
    • 双引号内可以包含转义字符,例如'\n'表示换行,'\t'表示制表符等。
  2. 单引号('):

    • 单引号主要用于表示字符。例如,'a'表示字符a,'B'表示字符B,以此类推。
    • 在单引号内,不能包含转义字符。如果尝试在单引号内使用转义字符,例如'\n'或'\t',编译器会报错。

1.1.2 string的一些常用函数

  1. 构造函数:用于创建字符串。例如,std::string a("Hello");
  2. 连接:使用 + 运算符或者 append 函数可以连接字符串。
  3. 获取长度:使用 size() 或 length() 函数可以得到字符串的长度a.size()
  4. 查找:可以使用 find() 函数查找子串或字符的位置。
  5. 替换replace() 函数可以替换字符串中的子串或字符。
  6. 比较:使用 ==!=<<=>>= 运算符或者 compare() 函数可以比较两个字符串。
  7. 子串:可以使用 substr() 函数获取字符串的子串。
  8. 插入insert() 函数可以在字符串的特定位置插入子串。
  9. 删除erase() 函数可以删除字符串中的子串。
  10. 遍历:可以使用下标 [] 或者 at() 函数访问字符串中的单个字符。
  11. 字符串转义:可以使用 replace() 函数对特定字符进行转义处理。
  12. 查找第一个非空字符:可以使用 find_first_not_of() 函数查找第一个非空字符的位置。
  13. 查找最后一个非空字符:可以使用 find_last_not_of() 函数查找最后一个非空字符的位置。
  14. 反转字符串:可以使用 reverse() 函数反转字符串。
  15. 替换所有出现的子串:可以使用 replace_all() 函数替换所有出现的特定子串。
  16. 将数字转换为字符串:可以使用 to_string() 函数将数字转换为字符串。
  17. 判断是否以某个字符串开头或结尾:可以使用 starts_with() 或 ends_with() 函数判断字符串是否以特定字符串开头或结尾。
#include <iostream>  
#include <string>  
  
int main() {  
    // 构造函数  
    std::string str1("Hello");  
    std::cout << str1 << std::endl;  
  
    // 连接  
    std::string str2 = "World";  
    std::string str3 = str1 + str2; // "HelloWorld"  
    std::cout << str3 << std::endl;  
  
    // 获取长度  
    size_t len = str3.size();  
    std::cout << "Length of string: " << len << std::endl;  
  
    // 查找子串位置  
    size_t pos = str3.find("World");  
    std::cout << "Position of \"World\": " << pos << std::endl;  
  
    // 替换子串  
    str3.replace(pos, 5, "Universe"); // "HelloUniverse"  
    std::cout << str3 << std::endl;  
  
    // 比较字符串  
    std::string str4 = "Hello";  
    bool isEqual = (str3 == str4);  
    std::cout << "Is str3 equal to str4? " << isEqual << std::endl;  
  
    // 子串  
    std::string subStr = str3.substr(0, 5); // "Hello"  
    std::cout << subStr << std::endl;  
  
    // 插入字符串  
    std::string str5 = " in ";  
    str3.insert(6, str5); // "Hello in World"  
    std::cout << str3 << std::endl;  
  
    // 删除子串  
    str3.erase(0, 5); // "World"  
    std::cout << str3 << std::endl;  
  
    // 遍历字符串  
    for(char c : str3) {  
        std::cout << c << " ";  
    }  
    std::cout << std::endl;  
  
    // 字符串转义  
    std::string str6 = "Hello\n"; // 新行字符转义为换行符  
    std::cout << str6 << std::endl;  
  
    // 查找第一个非空字符位置和最后一个非空字符位置  
    size_t firstNonBlankPos = str6.find_first_not_of(" \t\n"); // 忽略空格、制表符和换行符  
    size_t lastNonBlankPos = str6.find_last_not_of(" \t\n"); // 忽略空格、制表符和换行符  
    std::cout << "First non-blank position: " << firstNonBlankPos << std::endl;  
    std::cout << "Last non-blank position: " << lastNonBlankPos << std::endl;  

 // 反转字符串  
    std::string str = "Hello World";  
    std::reverse(str.begin(), str.end());  
    std::cout << str << std::endl; // 输出:dlroW olleH  
  
    // 分割字符串  
    std::string str2 = "apple,banana,orange";  
    std::vector<std::string> fruits = std::sregex_token_iterator(str2.begin(), str2.end(), ",");  
    for (const auto& fruit : fruits) {  
        std::cout << fruit << std::endl;  
    }  
    // 输出:apple  
    // 输出:banana  
    // 输出:orange  
  
    // 替换所有出现的子串  
    std::string str3 = "Hello World";  
    std::replace_all(str3, "World", "Universe");  
    std::cout << str3 << std::endl; // 输出:Hello Universe  
  
    // 将数字转换为字符串  
    int num = 123;  
    std::string str4 = std::to_string(num);  
    std::cout << str4 << std::endl; // 输出:123  
  
    // 判断是否以某个字符串开头或结尾  
    std::string str5 = "Hello World";  
    bool startsWith = str5.starts_with("Hello");  
    bool endsWith = str5.endsWith("World");  
    std::cout << std::boolalpha; // 输出:true  
    std::cout << startsWith << std::endl; // 输出:true  
    std::cout << endsWith << std::endl; // 输出:true  
  
    return 0;  
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: c 字符串替换指定字符是指将字符串中的某个字符替换成另一个字符。可以通过循环遍历字符串的每个字符,然后判断是否需要替换,若需要替换则将字符替换成目标字符,最后得到新的字符串。 具体步骤可以如下: 1. 定义一个空字符串作为替换后的结果。 2. 使用for循环遍历源字符串中的每个字符。 3. 判断当前字符是否需要替换,如果是需要替换的字符则将其替换成目标字符,否则保持不变。 4. 将替换后的字符添加到结果字符串中。 5. 循环结束后,结果字符串就是替换完成后的最终结果。 以下是一个示例代码,演示了如何实现字符串替换指定字符: ```python def replace_char(string, source_char, target_char): result = "" for char in string: if char == source_char: result += target_char else: result += char return result # 调用示例 source_string = "Hello, world!" source_char = "o" target_char = "*" replaced_string = replace_char(source_string, source_char, target_char) print(replaced_string) ``` 以上代码将字符串中的所有小写字母 "o" 替换成了星号 "*",输出结果为 "Hell*, w*rld!"。如果需要替换其他字符,只需修改参数即可。 这是实现字符串替换指定字符的基本思路,可以根据实际需要进行适当的修改和优化。 ### 回答2: 字符串替换指定字符是指在一个字符串中将指定的字符替换为新的字符字符串。使用C语言可以通过遍历字符串,找到匹配的字符并进行替换来实现。 首先,我们需要声明一个字符数组来存储字符串,例如: ```c char str[] = "Hello, World!"; ``` 然后,我们可以使用循环遍历字符串中的每个字符,判断是否需要替换。假设我们想将字符'e'替换为字符'X',可以使用如下代码: ```c for (int i = 0; i < strlen(str); i++) { if (str[i] == 'e') { str[i] = 'X'; } } ``` 以上代码会遍历字符串中的每个字符,如果字符是'e',就将其替换为'X'。如果我们想要替换的是一个字符串,可以使用库函数`strcpy`来实现: ```c #include <string.h> char str[] = "Hello, World!"; char replace[] = "X"; char *ptr = strstr(str, "o"); if (ptr != NULL) { strcpy(ptr, replace); } ``` 以上代码会用新字符串"X"替换原字符串中首次出现的"o"。 ### 回答3: 字符串替换是指将一个字符串中的指定字符替换为另一个字符。为了实现这个功能,可以使用编程语言中的字符串替换函数或方法。 一个常见的例子是使用Python编程语言中的replace()方法来替换字符串中的指定字符。replace()方法接受两个参数,第一个参数是要替换的字符,第二个参数是替换后的字符。以下是一个示例代码: ```python string = "Hello, World!" new_string = string.replace("o", "0") print(new_string) ``` 运行上述代码,输出的结果将是: ``` Hell0, W0rld! ``` 在这个例子中,我们将字符串中的所有字符"o"替换为"0",并将新的字符串赋值给变量new_string。输出的结果是新的字符串"Hello, World!"中所有字符"o"被替换为"0"。 在其他编程语言中,也有类似的字符串替换函数或方法可以使用。只需查阅相应编程语言的文档或教程,了解如何使用字符串替换函数或方法即可实现字符串的替换操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值