用另一个元素替换字符串中的元素的函数[重复]

Posted

技术标签:

【中文标题】用另一个元素替换字符串中的元素的函数[重复]【英文标题】:A function to replace an element in a string with another element [duplicate] 【发布时间】:2021-03-30 11:50:35 【问题描述】:

我想用小写字母替换字符串中的所有大写字母,是否有任何函数可以这样做,因为替换函数没有给出任何结果。 这是我的代码..

    for (int i = 0 ; i < string. size() ; i++ )
    
        if (string[i] >= 65 && string[i] <= 90)
        
            string.replace(string[i] , 1 ,string[i]+32);
        
    

【问题讨论】:

这里的string 是什么?请发布Minimal, Reproducible Example。注意std::string::replace 的第一个参数应该是索引,而不是字符。 见cplusplus.com/reference/locale/tolower 你在找cplusplus.com/reference/cctype/tolower 【参考方案1】:

另一种选择是使用变换

#include <algorithm>
#include <locale>

int main()

  std::transform(string.begin(), string.end(), string.begin(), ::tolower);

【讨论】:

【参考方案2】:

您应该阅读replace 的文档 - 第一个参数是要替换的子字符串的位置,而不是要替换的字符。

所以,string.replace(i , 1 ,string[i]+32); 应该可以工作。 就个人而言,我会选择

for(auto& p : string) p=std::tolower(p);

【讨论】:

您忘记分配较低的结果。 @DanM。 Ups,不错的收获。

以上是关于用另一个元素替换字符串中的元素的函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 用另一个 DOM 完全替换元素的 DOM - 更快的方法?

为啥我们在尝试用另一个字符串替换它时使用带有“\”的@ [重复]

如何使用 Python 循环替换列表中的多个字符串?

用另一个子字符串 C++ 替换子字符串

C#中的字符串替换变音符号[重复]

用另一个字符替换字符串中的某些字符