特殊字符C / C ++

时间:2013-11-29 10:58:59

标签: c++ c netbeans mingw

当我使用NetBeans编译下面的代码时,程序的输出是终端中的一些奇怪的字符(testeáÃμ)。不幸的是我无法找到解决方案。

有没有人经历过这个?知道解决方案吗?

#include <stdio.h> 
#include <locale.h> 

int main(int argc, char** argv) { 
setlocale(LC_ALL,""); 
printf("teste á é õ"); 
return (0); 
} 

我的编译器是MinGW,我的母语是巴西葡萄牙语。

sample configuration and versions

输出:

output

2 个答案:

答案 0 :(得分:-1)

他们不是Ascii角色。

ASCII字符0-31是各种空格字符,没有标准化的方式来打印它们。这是一个“扩展的ASCII表”。无法保证在您的特定平台上打印这些确切的符号。

它们在Windows 7中运行良好,使用GCC和Embarcadero C ++进行测试,都可以打印这些符号。但是在另一个OS和/或编译器上,可能会打印不同的符号或者根本不打印任何符号。

在所有系统上,只保证ASCII字符32 - 126可打印,并且符号相同。

答案 1 :(得分:-1)

C ++是一种英语语言,只能打印英文的原始ASCII代码,一些第三方库如Curses让你可以解决这个问题并打印一些非ASCII的代码:http://www.melvilletheatre.com/articles/ncurses-extended-characters/index.html

但是在大​​多数情况下,我不明白你为什么要打印这些字符,因为没有实际目的。

其他说明:由于原始ASCII码由127种类型组成,因此无法执行此操作。二进制和东西,问题的答案不同,所以只知道他们只允许127封可能的字母,更多可以在这里找到。 enwikipedia.org/wiki/ASCII 和 williamrobertson.net/documents/ascii.html(这个给​​你实际可以用C ++打印的内容)