我正在尝试使用 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()