我正在尝试编写一个程序来读取2个字符的用户输入字符串," passCode"并替换任何空间" "用" __"。我只能编辑passCode初始化和cout之间的空间。目前,当用户输入" 1"时,它应打印出" 1 _",但它只打印出" 1"再次。两个if语句应该在字符串中分别查看每个字符,如果它是一个空格,则应该用下划线替换该空格。但是,它似乎没有起作用。我不知道是否因为我需要一个其他声明,但我不知道它需要什么。如果字符串中没有空格,那么就不需要做任何事情。
#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;
}
答案 0 :(得分:5)
这是因为isspace
没有返回bool
,而是返回int
:
返回值
如果确实c是空白字符,则值不为零(即,为真)。否则为零(即假)。
如果您删除== true
部分,您的代码将按预期运行:
if (isspace(passCode.at(0))){
passCode.replace(0, 1, "_");
}
if (isspace(passCode.at(1))){
passCode.replace(1, 1, "_");
}