我正在编写一个程序,它将读取一个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;
}发布于 2017-09-07 18:58:27
这是因为isspace不返回bool,而是返回int
返回值 与零(即真)不同的值,如果c确实是空白字符的话.否则为零(即假)。
如果删除== true部件,代码将按预期工作:
if (isspace(passCode.at(0))){
passCode.replace(0, 1, "_");
}
if (isspace(passCode.at(1))){
passCode.replace(1, 1, "_");
}https://stackoverflow.com/questions/46103222
复制相似问题