c++ - 如何一次从字符串中删除一个字符?

标签 c++ string loops

我想弄清楚如何一次从字符串中删除一个字符,这样我就可以获得该字符串的所有版本,一次只丢失一个字符。这就是我正在尝试的工作,但无济于事。

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_typelength()size()返回(size_tsize() 自然属于一起)。

你的代码几乎是正确的,只是它每次都忽略了复制字符串,而 s.at(i)++ 不属于那里。

关于c++ - 如何一次从字符串中删除一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986299/

相关文章:

c++ - 动态规划算法N、K问题

c++ - std::shared_ptr::unique(),复制和线程安全

Python > 将字符串变量传递到方法中

c++ - cmake 共享库

c++ - 寻求真正的 "tool-chain"

c++ - 在一个 for 循环中创建多个结构体

string - 从子字符串列表中获取字符串

python - 添加到矩阵中时修改字符串的大小写

loops - "loops must be folded to ensure termination"是什么意思?

R 向量化函数的 Pythonic 替代品