我想弄清楚如何一次从字符串中删除一个字符,这样我就可以获得该字符串的所有版本,一次只丢失一个字符。这就是我正在尝试的工作,但无济于事。
for(int i = 0 ; i < s.length() ; i++){
tmp.erase(0, i);
std::cout << tmp << std::endl;
s.at(i)++;
}
它显然对第一个工作正常,但随后删除了其余部分。 JON 应具有 ON JN JO 的预期输出
最佳答案
最简单的方法是每次都复制一个字符串,然后修改拷贝:
for(std::string::size_type i = 0 ; i < s.size() ; i++){
auto tmp=copy;
tmp.erase(i, 1);
std::cout << tmp << std::endl;
}
为了正确起见,索引变量应该是一个std::string::size_type
,length()
和size()
返回(size_t
和 size()
自然属于一起)。
你的代码几乎是正确的,只是它每次都忽略了复制字符串,而 s.at(i)++
不属于那里。
关于c++ - 如何一次从字符串中删除一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986299/