Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;aut替换字符串的文本行_C++ - Fatal编程技术网

C++ c++;aut替换字符串的文本行

C++ c++;aut替换字符串的文本行,c++,C++,我发现了一个小错误,当我输入电子邮件时,发现结果与预期不符,结果是符号“@”变为“%40”,我想将文本“%40”改为符号“@”。 好的简单问题,如果找到“%40”,行字符串将自动成为“@”的符号 下面的代码只能工作1次,但我想在他的Fox be中找到任何文本“%40”@ char text[4080] = "asdnisadnias%40gmail.com,userd%40gmail.com,aas%40mail.com"; string data = text; size_t post; po

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

下面的代码只能工作1次,但我想在他的Fox be中找到任何文本“%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;
char text[4080]=“asdnisadnias%40gmail.com,userd%40gmail.com,aas%40mail.com”;
字符串数据=文本;
桩号;
post=数据。查找(“%40”);
数据。替换(职位,3,“@”);

cout您可以将其放入一个循环:

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;
char text[4080]=“asdnisadnias%40gmail.com,userd%40gmail.com,aas@mail.com";
字符串数据=文本;
对于(size\u t pos=0;(pos=data.find(“%40”,pos))!=std::string::npos;pos++)
{
数据。替换(位置3,“@”);
}

不能Simple在有一些并发的情况下继续替换。对于电子邮件来说,它已经足够有效了

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;
char text[4080]=“asdnisadnias%40gmail.com,userd%40gmail.com,aas@mail.com";
字符串数据=文本;
桩号;
while((post=data.find(“%40”)!=string::npos)
{
数据。替换(职位,3,“@”);
}

您的意思是它只将“%40”的第一个实例替换为“@”吗?您希望它替换“%40”的所有实例吗?我的意思是,是的,将所有%40替换为@为什么需要
string data=text
初始化而不是
string data=“…”
?您对bool类型的有符号值使用大小\u t,您需要像这样将表达式强制转换为(size_t):而((post=(size_t)(data.find(“%40”)!=string::npos)),我不这么认为。它将size_t(find)与size_t(string::npos)进行比较,结果得到bool。它在没有警告的情况下编译。它将编译,但为了理解而转换它是一个很好的实践:)没有转换。所有类型都是相同的。您是否使用int强制转换以下代码:while(n!=0){..}No,因为您正在比较相同类型的两个数字。检查string::find和string::npos的文档