ISSPACE和替换()的问题

issues with isspace and replace()

本文关键字:问题 替换 ISSPACE      更新时间:2023-10-16

我正在尝试编写一个程序,该程序将读取2个字符的用户输入的字符串,"密码",然后用" __"替换任何空间。我只能在密码初始化和COUT之间编辑空间。当前,当用户输入" 1"时,它应该打印出" 1_",但再次打印出" 1"。这两个如果语句应该在字符串中分别查看每个字符,并且如果它是一个空间,则应该用下划线替换该空间。但是,它似乎行不通。我无法分辨是否是因为我需要其他陈述,但是我不知道它需要什么。如果字符串中有任何空间,则无需完成。

#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

返回值

一个与零不同的值(即true),如果确实C是白空间字符。零(即false)否则。

如果删除== true零件,则您的代码将按预期工作:

if (isspace(passCode.at(0))){
    passCode.replace(0, 1, "_");
}
if (isspace(passCode.at(1))){
    passCode.replace(1, 1, "_");
}

演示。