从C ++中的字符串中删除字符

时间:2013-09-29 10:33:52

标签: c++ c string

我从C ++开始,我有一个简单的任务。正如标题所说,我想从字符串中删除第一个和最后一个字符x次(其中x是字符串的长度)。例如,如果字符串为“example”,则结果为:     
example
xampl
amp
m
amp
xampl
example

到目前为止,我这样想:

#include <iostream>
#include <string>

string sir = "Example";
int len, i;
len = sir.length();

for(i=1; i<=len; i++)
{
    sir.erase(sir.begin(), sir.end());
    cout<<sir;    
}

或类似的东西......有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您想删除第一个和最后一个char.But在示例中,您还在每个步骤中添加了它们。实际上并不清楚你想要什么。无论您想删除或添加字符,都可以保持字符串不变。所以你应该使用 substr 。请查看here

答案 1 :(得分:0)

问题在于

  • 您不能将std::string::eraseint i
    整数索引一起使用 您需要使用std::string::iterator

  • 但即使您使用std::string::iterator,使用当前逻辑,您也会尝试在调用erase后递增迭代器。 (这样的迭代器无效)
    可能的解决方案:在每个sir.begin()之后将erase分配给迭代器。

以下是它的样子:

std::string sir = "Example";
for(string::iterator i = sir.begin(); i != sir.end(); i = sir.begin())
{
    sir.erase(i);
    std::cout << sir << std::endl;
}

输出:

xample
ample
mple
ple
le
e

请注意,在删除std::string中的字符后,这些字符会丢失。你无法“恢复”它们。对于另一半,你必须采用更复杂的方法,但我会留给你:)