- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个特殊的赋值与从字符串中删除子字符串有关;我正在在线尝试一些斯坦福 SEE 类(class)来学习一些新语言。
目前我得到的是下面的内容,但是如果 text = "hello hello"
和 remove ="el"
,它会陷入循环,但是如果我将文本更改为 text = "hello hllo"
,它会起作用,让我觉得我在做一些明显愚蠢的事情。
赋值中有规定不修改传入的字符串,而是返回一个新的字符串。
string CensorString1(string text, string remove){
string returned;
size_t found=0, lastfound=0;
found = (text.substr(lastfound,text.size())).find(remove);
while (string::npos != found ){
returned += text.substr(lastfound,found);
lastfound = found + remove.size();
found = (text.substr(lastfound,text.size())).find(remove);
}
returned += text.substr(lastfound,found);
return returned;
}
指导将不胜感激:-)谢谢
更新
接受了非常友善的建议并将我的代码修改为:
string CensorString1(string text, string remove){
string returned;
size_t found=0, lastfound=0;
found = text.find(remove);
while (string::npos != found ){
returned += text.substr(lastfound,found);
lastfound = found + remove.length();
found = text.find(remove,lastfound);
}
returned += text.substr(lastfound);
return returned;
}
但还是一样
大家还有什么想法吗?
最佳答案
found = (text.substr(lastfound,text.size())).find(remove);
不正确。它在 text.substr(lastfound,text.size())
中返回搜索字符串的索引,但在 text
中不返回。
您或许应该将其更改为 found = text.find(text, lastfound);
。
除了不正确之外,取一个子字符串(这意味着分配一个新字符串)并计算其中的索引是非常低效的,除非优化器非常聪明。
此外,最终 returned += text.substr(lastfound,found);
也不正确:您需要添加文本的最后一 block ,而不是 found
索引(这很可能是空的,因为 lastfound
可以小于 found
。更好的做法是 returned += text.substr(lastfound);
编辑:
在第二个示例中,您需要替换 returned += text.substr(lastfound,found);
with returned += text.substr(lastfound,found-lastfound);
。 substr
的第二个参数是长度,而不是位置。
通过此更改,测试示例在我的测试程序中运行良好。
(由 J.F. Sebastian 添加:)
string CensorString1(string const& text, string const& remove){
string returned;
size_t found = string::npos, lastfound = 0;
do {
found = text.find(remove, lastfound);
returned += text.substr(lastfound, found-lastfound);
lastfound = found + remove.size();
} while(found != string::npos);
return returned;
}
关于C++ 字符串操作对我来说没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709199/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!