我正在尝试编写一个程序,该程序将读取 2 个字符的用户输入字符串“passCode”,并将任何空格“”替换为“__”。我只能编辑 passCode 初始化和 cout 之间的空格。目前,当用户输入“1”时,它应该打印出“1_”,但它只是再次打印出“1”。两个 if 语句应该分别查看字符串中的每个字符,如果它是空格,则应该用下划线替换该空格。然而,它似乎不起作用。我无法判断这是否是因为我需要一个 else 语句,但我不知道它需要是什么。如果字符串中没有任何空格,则无需执行任何操作。
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string passCode;
passCode = "1 ";
if (isspace(passCode.at(0)) == true){
passCode.replace(0, 1, "_");
}
if (isspace(passCode.at(1)) == true){
passCode.replace(1, 1, "_");
}
cout << passCode << endl;
return 0;
}
最佳答案
这是因为 isspace
不返回 bool
,它返回一个 int
:
Return Value
A value different from zero (i.e., true) if indeed c is a white-space character. Zero (i.e., false) otherwise.
如果删除 == true
部分,您的代码将按预期工作:
if (isspace(passCode.at(0))){
passCode.replace(0, 1, "_");
}
if (isspace(passCode.at(1))){
passCode.replace(1, 1, "_");
}
关于c++ - isspace 和 Replace() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46103222/