FrEqDe Asked: 2020-04-02 17:32:59 +0800 CST 2020-04-02 17:32:59 +0800 CST 2020-04-02 17:32:59 +0800 CST 如何在 C++ 中打印带有重音符号的字符? 772 例如,如果我使用: printf("ó á"); 在控制台中得到的结果是: ¾ ß 其中3/4代表ó,ß代表á c++ 8 Answers Voted Best Answer Ivan Botero 2020-04-02T19:42:45+08:002020-04-02T19:42:45+08:00 你可以这样做: #include <stdio.h> #include <wchar.h> #include <locale.h> #include <stdlib.h> int main(void){ setlocale(LC_ALL, ""); printf("ó á"); return EXIT_SUCCESS; } 我们所做的是包括库wchar.h,其中包括对广泛字符类型的支持,以及库locale.h,其中包括对不同类型的日期、货币、文本等格式的支持。 只需使用以下功能: setlocale(LC_ALL, ""); 一种允许我们在程序中使用不属于“标准”的不同类型的字符,可以正常打印。 结果: 或者 进程返回 0 (0x0) 执行时间:0.038 s 按任意键继续。 Dev 200 2020-04-02T18:26:22+08:002020-04-02T18:26:22+08:00 您可以尝试调用字符 printf("%c Ponemos el acento o tilde en canel%cn\n",162, 162); //ó 也就是说,调用与重音字母相对应的字符代码... 代码: á: 160 é: 130 í: 161 ó: 162 ú: 163 Á: 181 É: 144 Í: 214 Ó: 224 Ú: 223 ñ: 164 Ñ: 165 Peregring-lk 2020-04-02T19:21:26+08:002020-04-02T19:21:26+08:00 您必须具有终端的字符编码,与文本文件的字符编码相同。如果您的文本文件采用 UTF-8 格式,则终端必须采用 UTF-8 格式。如果是UCS-16,那么同样,UCS-16中的终端等等…… 编译器不考虑源文件的编码,按原样获取字符串文字,并将它们存储在可执行文件的内存中。当您打印它们时,它们将按照写入的方式转储到终端。如果终端编码与文件编码不同,它会将字符串的二进制序列解释为不同的字符。 Angel Moreno 2020-04-04T08:50:33+08:002020-04-04T08:50:33+08:00 字符 á 是这个十六进制数,具体取决于编码: UNICODE: E1 iso-8859-1: E1 Cp1252 (Windows): E1 Codepage 850 de MS-DOS: A0 UTF-8: C3 A1 (dos bytes) EBCDIC (IBM Mainframes): 45 如果 E1 字节到达带有代码页 850(西班牙)的 MSDOS 终端,它将绘制:ß 如果我们在 MSDOS 850 中,我们必须启动一个 A0 字节,这样 'á' 才会出来。 总而言之,释放字节 iso 比已弃用的字节 codepage-850 更好。 事实上,在 Linux 中,UTF-8 是最标准的。 http://www.vicente-navarro.com/blog/2008/06/15/juegos-de-caracteres-ascii-cp850-iso-8859-15-unicode-utf-8/ Daniel 2020-06-15T10:06:39+08:002020-06-15T10:06:39+08:00 您必须使用等价物: á –> \xA0; é –> \x82; í –> \xA1; ó –> \xA2; ú –> \xA3; ñ –> \xA4; Ñ –> \xA5; á -> 160; é -> 130; í -> 161; ó -> 162; ú -> 163; ñ -> 164; 例如: Canción>>Canci\xA2n Luisinaaaa 2020-04-22T06:13:35+08:002020-04-22T06:13:35+08:00 我认为打印这些字符的最简单方法是使用库,在顶部将其声明为“#include”,然后编写包含函数“setlocale (LC_CTYPE,“Spanish”)”的“”,然后立即编写该函数声明变量将已经采用带有重音符号的字符,甚至是字母“ñ” Eliane 2022-04-04T17:52:55+08:002022-04-04T17:52:55+08:00 它只是实现一个库。 #include<locale.h> 并放置在 main a 内: setlocale(LC_CTYPE, "Spanish"); 这将使您在 cout 中输入的任何文本都变为(ñ、ó 等) CYT MX 2022-07-04T22:04:24+08:002022-07-04T22:04:24+08:00 谢谢,如果它在 2022 年对我在 DevC++ 中使用 C++ 有效 #include<iostream> #include<locale.h>//Librería acentos using namespace std; int main(){ setlocale(LC_CTYPE, "Spanish");//Idioma y acentos int numero; cout<<"Digite un número: "; cin>>numero; cout<<"\nEl número que digito es: "<<numero; return 0; }
你可以这样做:
我们所做的是包括库
wchar.h
,其中包括对广泛字符类型的支持,以及库locale.h
,其中包括对不同类型的日期、货币、文本等格式的支持。只需使用以下功能:
一种允许我们在程序中使用不属于“标准”的不同类型的字符,可以正常打印。
结果:
您可以尝试调用字符
也就是说,调用与重音字母相对应的字符代码...
代码:
á: 160 é: 130 í: 161 ó: 162 ú: 163 Á: 181 É: 144 Í: 214 Ó: 224 Ú: 223 ñ: 164 Ñ: 165
您必须具有终端的字符编码,与文本文件的字符编码相同。如果您的文本文件采用 UTF-8 格式,则终端必须采用 UTF-8 格式。如果是UCS-16,那么同样,UCS-16中的终端等等……
编译器不考虑源文件的编码,按原样获取字符串文字,并将它们存储在可执行文件的内存中。当您打印它们时,它们将按照写入的方式转储到终端。如果终端编码与文件编码不同,它会将字符串的二进制序列解释为不同的字符。
字符 á 是这个十六进制数,具体取决于编码:
如果 E1 字节到达带有代码页 850(西班牙)的 MSDOS 终端,它将绘制:ß
如果我们在 MSDOS 850 中,我们必须启动一个 A0 字节,这样 'á' 才会出来。
总而言之,释放字节 iso 比已弃用的字节 codepage-850 更好。
事实上,在 Linux 中,UTF-8 是最标准的。
http://www.vicente-navarro.com/blog/2008/06/15/juegos-de-caracteres-ascii-cp850-iso-8859-15-unicode-utf-8/
您必须使用等价物:
例如:
Canción
>>Canci\xA2n
我认为打印这些字符的最简单方法是使用库,在顶部将其声明为“#include”,然后编写包含函数“setlocale (LC_CTYPE,“Spanish”)”的“”,然后立即编写该函数声明变量将已经采用带有重音符号的字符,甚至是字母“ñ”
它只是实现一个库。
并放置在 main a 内:
这将使您在 cout 中输入的任何文本都变为(ñ、ó 等)
谢谢,如果它在 2022 年对我在 DevC++ 中使用 C++ 有效