为什么从 std::cin 读取输入后右括号字符的值有时不是")"?

Why is the value of closing bracket character sometimes not ')' after reading input from std::cin?

本文关键字:字符 cin std 读取 输入 为什么      更新时间:2023-10-16

我正在浏览一些C++教程,我已经遇到了可能是一个微不足道的问题,但现在却让我感到困惑。当我使用 Xcode 11.3 在C++中输出右括号字符的值时,它有时会输出为 unicode 字符。

#include <iostream>
int main() {
int x;
char ch1, ch2;
std::cin >> ch1 >> x >> ch2;
if (!std::cin || ch1 != '(' || ch2 != ')') {
std::cout << "FAIL:n";
std::cout << "ch1 = " << ch1 << "n";
std::cout << "x = " << x << "n";
std::cout << "ch2 = " << ch2 << "n";
return 1;
} else {
std::cout << "SUCCESS:n";
return 0;
}
}

在 Xcode 中,输入(2)- 输入为四个击键 "(", "2", "(" 和 ENTER - 给出输出:

FAIL:
ch1 = (
x = 2
ch2 = 357

但是,如果右括号用作流中的第一个字符,则它会按预期输出为字符)

我猜这与事物的转义方式有关,或者可能是我如何使用输入流的一些逻辑错误。请谁能让我知道我做错了什么?

当我在输入流中键入时,Xcode 会自动完成右括号。显然,直到刚才我才注意到这一点,输入似乎是正确的,但显然没有实际的击键。