我正在尝试使用 for 循环从某些输入中仅打印大写字母以迭代槽字符,但由于某种原因它不起作用
I'm trying to print only uppercase letters from some input using for loop to iterate trough characters, but for some reason it doesn't work
我通过测试 100% 确定 for 循环确实遍历了字符,但程序的其他部分无法正常工作。
我正在尝试使用 if 语句仅打印大写字符。
这里有一些 input/output 示例,可以更好地了解该程序的内容:
输入:Tim-Berners-Lee
输出:TBL
输入:Albert-Einstein
输出:AE
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main(){
string name;
cin >> name;
int N = name.length();
for (int i = 0; i < N; i++)
{
if (name[i] == 'A' || 'B' || 'C' || 'D' || 'E' || 'F' || 'G' || 'H' || 'I' || 'J' || 'K' || 'L' || 'M' || 'N' || 'O' || 'P' || 'Q' || 'R' || 'S' || 'T' || 'U' || 'V' || 'W' || 'X' || 'Y' || 'Z'){
cout << name[i];
}
}
}
你的代码会先计算 compare name[i] == 'A'
然后取
与'B'
、'C'
等进行OR运算的结果……绝对不行。
您应该 name[i] == 'A' || name[i] == 'B' || ...
或只使用 std::isupper()
。
我通过测试 100% 确定 for 循环确实遍历了字符,但程序的其他部分无法正常工作。 我正在尝试使用 if 语句仅打印大写字符。
这里有一些 input/output 示例,可以更好地了解该程序的内容:
输入:Tim-Berners-Lee
输出:TBL
输入:Albert-Einstein
输出:AE
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main(){
string name;
cin >> name;
int N = name.length();
for (int i = 0; i < N; i++)
{
if (name[i] == 'A' || 'B' || 'C' || 'D' || 'E' || 'F' || 'G' || 'H' || 'I' || 'J' || 'K' || 'L' || 'M' || 'N' || 'O' || 'P' || 'Q' || 'R' || 'S' || 'T' || 'U' || 'V' || 'W' || 'X' || 'Y' || 'Z'){
cout << name[i];
}
}
}
你的代码会先计算 compare name[i] == 'A'
然后取
与'B'
、'C'
等进行OR运算的结果……绝对不行。
您应该 name[i] == 'A' || name[i] == 'B' || ...
或只使用 std::isupper()
。