2013-03-27 165 views
0

我需要在字符串删除一个字符在字符串

例如删除一个指定的位置:

输入:4花

输出:弗洛尔

我写了这个代码,但它给了一个输出:弗洛(即擦除的字的其余部分) 什么其他功能,而不是擦除,我可以用它来实现这一目标?

int main(){ 

    int num; 
    int index = 1; 
    string s; 

    cin >> num >> s; 
    s = s.erase(num-1); 
    cout << index << " " << s << endl; 

return 0; 
} 

回答

8

尝试:

s.erase(num-1, 1); 

您目前(有效的)呼吁:

s.erase(num-1, npos); 

(并删除s =位,因为没有必要重新分配s)。

0

这个怎么样?

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); 
} 
1

如果你是一个初学者在C++的世界里,我会建议你写你自己的函数,它吧!您可以随时使用标准功能和类。可能有人会说,为什么要重新发明轮子,但它不是关于重新发明,但学什么发明的意思,就是车轮,以及它如何被发明。

编写我们自己的代码(专为C字符串!)会给你很好的编程经验,将给予有关语法的信心,最imporatantly它会提高你的逻辑发展技能。

你的功能可能是这样的:

​​3210

现在的问题是:将它去掉相同的字符,或只是第一个出现的所有?如果没有出现特定字符会怎么样? 如果这种功能返回的东西,如果它删除字符,或清除的柜台?是否需要另一个参数,即“删除所有事件”。

快乐编码!

0

只是尝试 s.erase(num-1, 1),这就是你想要的。

的std :: string ::擦除的原型是

erase(size_t __pos = 0, size_t __n = npos) 

如果未提供第二个参数,默认值npos将被使用,其余的开始从__pos将被移除。