2017-03-16 3 views
1

Visual Studio 2013ツールを使用してC++でu8リテラルをどのように使用できますか?C++でu8リテラルを有効にする

私はこれを試しました:string test = u8"áááá";しかしそれは私にエラーu8 is undefinedを与えます。私はC++ V.11

+0

をコンパイル時に+11モード? – tadman

+0

私はそう思います。バージョンを確認するにはどうしたらよいですか? – GrandTim

+0

@tadman:私が知っている限り、Visual Studioには「モード」はありません。あなたは基本的に与えられたものを手に入れます。 –

答えて

5

VS2013 doesn't support Unicode string literals。必要に応じて、VS2015に更新する必要があります。

あなたはまたVS2015 supports so long as you include the necessary using namespace for them実際のC++ stringリテラル(例えばu8"áááá"s)、単なるCスタイルの文字列リテラル(例えばu8"áááá")、使用したいことがあります。あなたがC +にいるあなたは確かにあります

using namespace std::string_literals; 
+0

wtf: 'std :: string_literals'は、' u8'ではなく、演算子 "s"( "hi" s - > 'std :: string')を扱います。 – fnc12

+0

@ fnc12:Trueです。私は、Cスタイルのリテラルを使い続ける場合、 'using'は必要ないという2つの機能を組み合わせました。私はそれを修正するために編集しました(コンパイラが文字列の長さをすでに知っているときに 'NUL 'のランタイムスキャンを避けるなど、他の理由でリテラルを使うのは良い考えです。 – ShadowRanger

3

ノー、C++ V.11

そんなにないうーんを...持っています。

Visual Studio 2013 does not support Unicode string literals

このC++ 11機能を使用するには、ツールチェーンをアップグレードする必要があります。

+0

それだけです。私はそれがサポートだと思っていた。あなたはVS 2013で好きなように使うためにu8をどのように "置き換える"ことができるか知っていますか? – GrandTim

+0

@ GrandTim:いいえ。バイト単位で識別された個々の文字を手作業で 'char'の配列を構築しなければなりません! –

+1

@ GrandTim:それがなければ、文字列内の個々のバイトのエスケープやワイド文字のリテラルを作り、それをUTF-8にエンコードすることができません。 – ShadowRanger

関連する問題