删除字符在C++中形成字符串
Delete characters form a string in C++
我从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;
}
或者类似的东西...有人可以帮助我吗?
您要同时删除第一个和最后一个字符。但在示例中,您还在每个步骤中添加了它们。实际上并不清楚你想要什么。无论您要删除或添加什么字符,都可以保持字符串不变。所以你应该使用 substr。在这里查看。
问题是
-
不能使用
std::string::erase
整数索引,如int i
,
您需要使用std::string::iterator
-
但即使你使用
std::string::iterator
,使用当前的逻辑,你也会尝试在调用erase
后增加迭代器。(此类迭代器无效)
可能的解决方案:在每次erase
后将sir.begin()
分配给迭代器。
下面是它的外观:
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
中删除字符后,这些字符将丢失。您无法"恢复"它们。对于另一半,你必须采用更复杂的方法,但我会把它留给你:)