用另一个元素替换字符串中的元素的函数[重复]
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 - 更快的方法?