删除一个字符在字符串
问题描述:
我需要在字符串删除一个字符在字符串
例如删除一个指定的位置:
输入:4花
输出:弗洛尔
我写了这个代码,但它给了一个输出:弗洛(即擦除的字的其余部分) 什么其他功能,而不是擦除,我可以用它来实现这一目标?
int main(){
int num;
int index = 1;
string s;
cin >> num >> s;
s = s.erase(num-1);
cout << index << " " << s << endl;
return 0;
}
答
尝试:
s.erase(num-1, 1);
您目前(有效的)呼吁:
s.erase(num-1, npos);
(并删除s =
位,因为没有必要重新分配s
)。
答
这个怎么样?
std::string removeChar(std::string const& input, size_t pos) {
return input.substr(0, pos-1) + input.substr(pos);
}
或本
std::string removeChar(std::string const& input, size_t pos) {
return input.erase(pos-1, 1);
}
答
如果你是一个初学者在C++的世界里,我会建议你写你自己的函数,它吧!您可以随时使用标准功能和类。可能有人会说,为什么要重新发明*,但它不是关于重新发明,但学什么发明的意思,就是车轮,以及它如何被发明。
编写我们自己的代码(专为C字符串!)会给你很好的编程经验,将给予有关语法的信心,最imporatantly它会提高你的逻辑发展技能。
你的功能可能是这样的:
3210现在的问题是:将它去掉相同的字符,或只是第一个出现的所有?如果没有出现特定字符会怎么样? 如果这种功能返回的东西,如果它删除字符,或清除的柜台?是否需要另一个参数,即“删除所有事件”。
快乐编码!
答
只是尝试 s.erase(num-1, 1)
,这就是你想要的。
的std :: string ::擦除的原型是
erase(size_t __pos = 0, size_t __n = npos)
如果未提供第二个参数,默认值npos
将被使用,其余的开始从__pos将被移除。