c++自动替换字符串的文本行

c++ aut replace text row of character string

本文关键字:文本 字符串 替换 c++      更新时间:2023-10-16

我发现了一个小错误,当我输入我的电子邮件时,发现结果不符合预期,结果是一个符号'@'变成了'%40',我想把文本'%40'变成一个符号'@'。好,简单的问题,如果发现' %40'行字符串自动成为' @'的符号。

下面的代码只能工作1次,但我想找到任何文本'%40'在他的狐狸@

char text[4080] = "asdnisadnias%40gmail.com,userd%40gmail.com,aas%40mail.com";
string data = text;
size_t post;
post = data.find("%40");
data.replace(post,3,"@");
cout<<data;

: asdnisadnias@gmail.com, userd % 40 gmail.com, aas@mail.com

你可以把它放入一个循环:

char text[4080] = "asdnisadnias%40gmail.com,userd%40gmail.com,aas@mail.com";
string data = text;
for (size_t pos = 0; (pos = data.find("%40", pos)) != std::string::npos; pos++)
{
    data.replace(pos,3,"@");
}
cout << data;

在这里,pos跟踪您搜索到的位置,从索引0(字符串的开始)开始。然后,继续对该位置的数据调用find,直到得到std::string::npos表示没有更多匹配。

在这种情况下,pos++不是严格要求的,但是我们可以增加1,因为我们用长度为1的"@"代替。这在用单个反斜杠替换双反斜杠的情况下可能很重要。

只要有并发就继续替换。对于电子邮件来说,它足够有效。

char text[4080] = "asdnisadnias%40gmail.com,userd%40gmail.com,aas@mail.com";
string data = text;
size_t post;
while((post = data.find("%40")) != string::npos)
{
    data.replace(post,3,"@");
}
cout<<data;