要在C ++中获取某些特殊字符,我们可以在单引号中包含八进制值的转义序列,因此'\nnn'
其中nnn
是八进制代码。
我目前所知道的仅示例是'\370'
,用于度数符号(°)。
在C ++中打印非简单ascii字符的其他此类值的列表在哪里?
在ascii-code.com的代码表中有这两个条目
DEC OCT HEX BIN Symbol HTML Number HTML Name Description
176 260 B0 10110000 ° ° ° Degree sign
248 370 F8 11111000 ø ø ø Latin small letter o with slash
显然不正确解决了我的问题 - 即,将'\nnn'
分配给char
变量或在Visual Studio 2015中通过cout <<
插入到输出流。
哪一张桌子正确?它与“代码集”有关,但我不知道VS 2015中的默认代码集是什么,或者如何更改代码集。
下面建议我“使用\u####
,其中####
是表示所需字符的Unicode值的数字。例如\u2014
将打印 - (em-dash) “。但是,当我尝试该示例 - 或来自rapidtables.com/code/text/unicode-characters或wikipedia.org/wiki/List_of_Unicode_characters的任何其他示例时 - 我没有得到给定代码所期望的字符。例如,\20AC
应该产生一个欧元符号(€),但是我得到一个带有cedilla(Ç)的大C。在Visual Studio 2015中用于在C ++中打印特殊字符的Unicode值表在哪里?
答案 0 :(得分:1)
在Visual Studio 2013中准备的C ++控制台应用程序的下一代码可能会有所帮助。 Based on this answer
// 37645602.cpp : Defines the entry point for the console application.
//
#include "stdafx.h" // added by Visual Studio
#include <fstream>
#include <iostream>
#include <codecvt>
#include <locale>
#include <fcntl.h>
#include <io.h>
const wchar_t* testArray[] =
{
L"€ ° ø — ď π щ", // for debugging
L"\u20AC \u00b0 \u00F8 \u2014 \u010f \u03c0 \u0449" // the same characters
};
int _tmain(int argc, _TCHAR* argv[])
{
_setmode(_fileno(stdout), _O_U16TEXT);
for (int j = 0; j < 2; ++j)
{
std::wcout << testArray[j] << L'\n';
}
return 0;
}
<强>输出强>:
==> 37645602.exe
€ ° ø — ď π щ
€ ° ø — ď π щ
使用拉丁语,斯拉夫语,西里尔语和希腊语字符的混合测试(类似于此Alt KeyCode Finder的脚本输出):
==> altcodes "€°ø—ďπщ"
Ch Unicode Alt? mod 256 UTF-8 IME 0405/cs-CZ; CP852; ANSI 1250
€ U+20AC 8364 …172… 0xE282AC Euro Sign
° U+00B0 176 …176… 0xC2B0 Degree Sign
ø U+00F8 248 …248… 0xC3B8 Latin Small Letter O With Stroke
— U+2014 8212 …20… 0xE28094 Em Dash
ď U+010F 271 …15… 0xC48F Latin Small Letter D With Caron
π U+03C0 960 …192… 0xCF80 Greek Small Letter Pi
щ U+0449 1097 …73… 0xD189 Cyrillic Small Letter Shcha
€°ø—ďπщ