c++ - 如何正确替换字符串 C++ 中的字符?

标签 c++ string replace

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main() {
string passCode;

passCode = "1 ";
int i;

for(i =0; i < passCode.length();i++){
if(isspace(passCode.at(i)) == true){

passCode.replace(i,1,"_");

}

}
cout << passCode << endl;
return 0;
}

上面的代码,我的指示是 [将 2 字符字符串 passCode 中的任何空格 ' ' 替换为 '_'。如果不存在空间,程序不应打印任何内容。]

我的代码目前是这样的,它输出“1”。当我使用条件检查 false 而不是 true 运行它时,它会打印“_”。我不明白为什么要这样做,有人看到我没有看到的问题吗? 我不允许使用该算法。 header 。我也只能在 main 中工作,不能使用函数或导入的头文件/类。

最佳答案

对于单个字符,使用 std::replace 可能更容易算法:

std::replace(passCode.begin(), passCode.end(), ' ', '_');

如果您不能使用算法 header ,您可以推出自己的 replace 函数。它可以通过一个简单的循环来完成:

template<typename Iterator, typename T>
void replace(Iterator begin, Iterator end, const T& old_val, const T& new_val)
{
    for (; begin != end; ++begin)
        if (*begin == old_val) *begin = new_val;
}

关于c++ - 如何正确替换字符串 C++ 中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224845/

相关文章:

c++ - 当 C++11 不是一个选项时,不共享所有权的智能指针

C++将指向当前对象的指针传递给函数

java - 在字符串的特殊字符前添加 escape "\"

javascript - 在大写字母前插入空格

javascript - 用 jquery 替换来自正则表达式匹配的文本

c++ - 为什么 std::make_unique 而不是 std::unique_ptr::make?

c++ - 为什么 cout 命令不打印消息?

C:验证输入数组元素

java - 自定义类型集合的自定义字符串表示形式

mysql - SQL 查询的语法检查