#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/