我从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;
}
或类似的东西......有人可以帮助我吗?
答案 0 :(得分:1)
您想删除第一个和最后一个char.But在示例中,您还在每个步骤中添加了它们。实际上并不清楚你想要什么。无论您想删除或添加字符,都可以保持字符串不变。所以你应该使用 substr 。请查看here。
答案 1 :(得分:0)
问题在于
您不能将std::string::erase
与int 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
中的字符后,这些字符会丢失。你无法“恢复”它们。对于另一半,你必须采用更复杂的方法,但我会留给你:)