2016-06-05 9 views
0

Um bestimmte Sonderzeichen in C++ zu erhalten, können wir eine Escape-Sequenz von Oktalwerten in einfache Anführungszeichen einschließen, also '\nnn', wobei nnn ein Oktalcode ist. Das nur Beispiel, das ich derzeit kenne, ist '\370' für das Gradsymbol (°). Wo ist eine Liste anderer solcher Werte für das Drucken nicht-einfach-ASCII-Zeichen in C++?Wo ist die Wertetabelle zum Drucken spezieller Symbole in C++?

In einer Codetabelle bei ascii-code.com sind diese beiden Einträge

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 

die – dh für mein Problem nicht richtig klar sind, '\nnn' auf eine char Variable oder das Einfügen in eine Output über cout << in Visual Studio zuweisen 2015. Wo ist eine korrekte Tabelle? Es hat etwas mit "Codesätzen" zu tun, aber ich weiß nicht, welcher Zeichensatz der Standard in VS 2015 ist oder wie man den Zeichensatz ändert.

Es wurde unter dem I „\u#### verwenden, wo #### eine Zahl ist, die Unicode-Wert des gewünschten Zeichens darstellt. Zum Beispiel \u2014 wird eine — (em-dash) drucken.“ Vorgeschlagen Jedoch, wenn ich dieses Beispiel – oder irgendwelche anderen von rapidtables.com/code/text/unicode-characters oder wikipedia.org/wiki/List_of_Unicode_characters – versuche, erhalte ich nicht das erwartete Zeichen für den gegebenen Code. Zum Beispiel, \20AC sollte ein Euro-Zeichen (€) produzieren, aber ich bekomme ein großes C mit Cedilla (& Ccedil;). Wo ist die Tabelle der Unicode-Werte zum Drucken von Sonderzeichen in C++ in Visual Studio 2015?

+0

definieren " mein Problem". Die Tabelle auf ascii-code.com gibt die Zeichen im ISO-8859-1-Zeichensatz an. Welchen Zeichensatz verwendest du? –

+0

@SamVarshavchik - Siehe zusätzliche Info. –

+1

Ich empfehle Ihnen, '\ u ####' zu verwenden, wobei '####' eine Zahl ist, die den Unicode-Wert des gewünschten Zeichens darstellt. Zum Beispiel wird '\ u2014' einen ** - ** (em-Strich) ausgeben. – sergiol

Antwort

1

how to change the codeset

Next-Code für eine C++ Konsolenanwendung in Visual Studio 2013 bereit zu helfen. 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; 
} 

Ausgang:

==> 37645602.exe 
€ ° ø — ď π щ 
€ ° ø — ď π щ 

Getestet eine Mischung aus Latin mit, slawische, kyrillischen und griechischen Schriftzeichen (Ausgabe von einem Skript ähnlich wie diese 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 
€°ø—ďπщ