c++ - 为什么这个程序没有检测到有空格?
问题描述
所以我又在做这个程序,我遇到了另一个问题。我正在测试一个字符是否是一个空格。但是,它不会检测到有空格,而是停止循环并且不再做任何事情。这是我的代码:
string reet(char reet) {
if (isspace(reet) == true) {
return "IA";
}
else {
switch (reet) {
case 'a':
return "Zg";
break;
case'b':
return "dA";
break;
case 'c':
return "dG";
break;
case 'd':
return "aw";
break;
case 'e':
return "bw";
break;
case 'f':
return "dQ";
break;
case 'g':
return "cg";
break;
case 'h':
return "ZA";
break;
case 'i':
return "cQ";
break;
case 'j':
return "YQ";
break;
case 'k':
return "eA";
break;
case 'l':
return "dw";
break;
case 'm':
return "cw";
break;
case 'n':
return "ag";
break;
case 'o':
return "eQ";
break;
case 'p':
return "bA";
break;
case 'q':
return "aA";
break;
case 'r':
return "ZQ";
break;
case 's':
return "cA";
break;
case 't':
return "Yw";
break;
case 'u':
return "eg";
break;
case 'v':
return "bg";
break;
case 'w':
return "aq";
break;
case 'x':
return "bQ";
break;
case 'y':
return "Yg";
break;
case 'z':
return "Zw";
break;
default:
return " ";
break;
}
}
}
string enc(string input) {
string sketchyBois = input;
string bigBoi = "";
int yeetL = sketchyBois.length() + 1;
for (int x = 0; x < yeetL;) {
bigBoi = bigBoi + reet(sketchyBois[x]);
x++;
}
return bigBoi;
}
我只是想知道是否有人可以告诉我为什么这样做?谢谢!
解决方案
你需要改变
if (isspace(reet) == true)
至
if (isspace(reet))
或者
if (isspace(reet) != 0)
因为只为空白字符isspace
返回非零int
值,而不是 a bool
。
(请注意,作为编码风格的问题,通常最好在布尔测试中省略与true
or的比较,而只使用or 。)false
if (expr)
if (!expr)
推荐阅读
- rabbitmq - 聊天机器人中消息之间的动态延迟
- angular - Bootstrap Carousel 中的幻灯片不是以水平形式出现,而是仅以垂直形式出现
- xml - Powershell XML 删除 ChildNode“日期”超过一个月的节点
- python - 将数据框转换为列表时出现错误
- arrays - 两个excel数组的逻辑运算
- python - Python Web Scrape:删除输出中多余的 HTML 标签。所有数据都来自页表,get_text 和 pretiffy 不起作用
- r - 通过指数平滑获得预测的 RMSE
- node.js - 命令行工具的跨平台分发
- c# - 错误:ConnectionString 属性尚未初始化
- database - 内存中的sqlite出现“没有这样的表”错误