C++ Cout无符号字符

C++ Cout无符号字符,c++,visual-studio,char,cout,unsigned-char,C++,Visual Studio,Char,Cout,Unsigned Char,我正在使用VisualStudio2019:为什么这个命令什么都不做 std::cout << unsigned char(133); 但结果是一样的 我记得它以前工作过,我的一些使用这个命令的程序错误地停止了工作。。。在一个空白的新项目相同的结果 我认为这可能是我新的自定义键盘布局的原因,但禁用它并没有改变太多 在其他在线编译器上,它工作正常,因此可能是Visual Studio 2019的错误?您可以尝试使用 或 因为在我看来,所有这些都是有效的,所以很难找出问题所在,常识会指

我正在使用VisualStudio2019:为什么这个命令什么都不做

std::cout << unsigned char(133);
但结果是一样的

我记得它以前工作过,我的一些使用这个命令的程序错误地停止了工作。。。在一个空白的新项目相同的结果

我认为这可能是我新的自定义键盘布局的原因,但禁用它并没有改变太多

在其他在线编译器上,它工作正常,因此可能是Visual Studio 2019的错误?

您可以尝试使用

因为在我看来,所有这些都是有效的,所以很难找出问题所在,常识会指向一些配置问题。

您可以尝试使用


因为在我看来,所有这些都是有效的,所以很难找出问题所在,常识会指向一些配置问题。

明智的答案是:不要依赖扩展ASCII字符。Unicode的普及程度足以使其成为首选方法:

#include <iostream>
int main() {
    std::cout << u8"\u00e0\n";
}
这将显式打印您请求的字符;事实上,这也是你的浏览器理解它的方式,你可以很容易地通过输入一些unicode字符搜索来验证,这将导致带有GRAVE的拉丁文小写字母A,代码U+00E0,你可以在上面的代码中找到


在您的示例中,使用有符号或无符号字符没有区别;字节值133被写入终端,但它解释它的方式可能因机器而异,这取决于它实际如何设置来解释它。事实上,在UTF-8控制台中,这只是一个错误的unicode序列u\0x85不是有效字符-如果您的操作系统切换到UTF-8,这可能就是您没有看到输出的原因。

明智的答案是:不要依赖扩展ASCII字符。Unicode的普及程度足以使其成为首选方法:

#include <iostream>
int main() {
    std::cout << u8"\u00e0\n";
}
这将显式打印您请求的字符;事实上,这也是你的浏览器理解它的方式,你可以很容易地通过输入一些unicode字符搜索来验证,这将导致带有GRAVE的拉丁文小写字母A,代码U+00E0,你可以在上面的代码中找到


在您的示例中,使用有符号或无符号字符没有区别;字节值133被写入终端,但它解释它的方式可能因机器而异,这取决于它实际如何设置来解释它。事实上,在UTF-8控制台中,这只是一个错误的unicode序列u\0x85不是有效字符-如果您的操作系统切换到UTF-8,这可能就是您没有看到输出的原因。

这没有帮助。演员们只是选择了另一个观点,其实不是要在这里尝试;它是关于理解正在发生的事情并随后编写代码以避免将来出现此类问题。如果你做了一个你并不真正理解的修复,你真的能保证吗?它不起作用。。。这只是另一种方法cast@BartekBanachewicz,你是对的,但是很难理解为什么某些代码在昨天工作,而不是今天,并且在不同的机器上在同一个编译器中工作,我完全支持理解为什么事情会发生,但这是一个非常奇怪的问题。如果你有什么我很想知道的,我的希望很低,但这是我最好的机会。这不会有帮助的。演员们只是选择了另一个观点,其实不是要在这里尝试;它是关于理解正在发生的事情并随后编写代码以避免将来出现此类问题。如果你做了一个你并不真正理解的修复,你真的能保证吗?它不起作用。。。这只是另一种方法cast@BartekBanachewicz,你是对的,但是很难理解为什么某些代码在昨天工作,而不是今天,并且在不同的机器上在同一个编译器中工作,我完全支持理解为什么事情会发生,但这是一个非常奇怪的问题。如果你有什么我很想知道的,我希望渺茫,但这是我最好的机会。谢谢!成功了!即使它打印的是一个Ã而不是一个Ã,你从哪里得到的u8\xC3\xA0代码?我想可以把它换成其他的角色…@网上有很多表格或搜索引擎,比如,但是你得到了Ã这个角色真的很令人费解;我想知道你们是否真的有utf-8终端。。。它按预期工作,例如在。我认为我没有一个UTF-8功能的终端,因为Ã不是UTF-8字符,正如我所说,我可以打印扩展ascii字符,直到几天前解决!我只需要写std::cout@Foxel,你能把这两个版本都转储到一个文件main>out.txt中,看看这些文件里面有什么吗?最好使用一些十六进制转储实用程序。谢谢!成功了!即使它打印的是一个Ã而不是一个Ã,你从哪里得到的u8\xC3\xA0代码?我想能够改变它为其他字符…@有许多表或搜索引擎在线,如,但它真的令人费解
你得到了这个角色;我想知道你们是否真的有utf-8终端。。。它按预期工作,例如在。我认为我没有一个UTF-8功能的终端,因为Ã不是UTF-8字符,正如我所说,我可以打印扩展ascii字符,直到几天前解决!我只需要写std::cout@Foxel,你能把这两个版本都转储到一个文件main>out.txt中,看看这些文件里面有什么吗?最好使用一些十六进制转储实用程序。注释不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束。
std::cout << static_cast<char>(133) << std::endl;
#include <iostream>
int main() {
    std::cout << u8"\u00e0\n";
}