c++ - 使用 isalpha() C++ 的问题
问题描述
这里是 C++ 的新手。我正在编写一个非常简单的程序,用于检查包含两个字符的字符串中的字符是否按字母顺序排列。如果一个字符是按字母顺序排列的,我想用字符“_”替换它,但是,我的 if 语句似乎有问题,我一生都无法弄清楚。我觉得修复很简单,但想不出答案。任何帮助,将不胜感激。
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string passCode;
cin >> passCode;
if (isalpha(passCode.at(0)) == true){
passCode.at(0) = '_';
}
if (isalpha(passCode.at(1)) == true){
passCode.at(1) = '_';
}
cout << passCode << endl;
return 0;
}
解决方案
问题是它std::isalpha
不返回bool
,它返回一个int
-- 并且只保证在成功时返回一个非零值。
当你比较时:
if (isalpha(passCode.at(0)) == true)
您正在隐式转换true
为整数值(在本例中1
为 )——这不是std::isalpha
返回的结果。
您可以通过删除== true
并允许将int
值隐式转换为bool
来轻松解决此问题:
if (isalpha(passCode.at(0))){
passCode.at(0) = '_';
}
if (isalpha(passCode.at(1))){
passCode.at(1) = '_';
}
推荐阅读
- javascript - Jquery dynamically select an item from dropdown not workingq
- java - How to make two classes which both have method with the same name, signature and return type behave like they would implement the same interface
- ios - 如何在 iOS(Swift4)中从 facebook 获取 profile_picture 和 friends_lists?
- javascript - setInterval 仅附加一次链接而不清除 Interval
- javascript - Object Literals vs. Functions
- mongodb - Docker 内部的 Mongo 身份验证
- javascript - createObjectURL() 不生成适当的图像 URL
- java - 这是一个数据压缩java代码,这个程序什么都没有出来,为什么?
- sql - 是否可以获取 SQL 日期时间列的时间戳?
- javascript - 如何将A列的值与B列的值相乘以在javascript中获取c列的值