2017-03-16 30 views
1

如何在C++中使用u8文字,使用Visual Studio 2013工具?在C++中激活u8文字

我试过这个:string test = u8"áááá";但它给我的错误,u8 is undefined。我有C++ V.11

+0

你确定你在C +是编译时为+11模式? – tadman

+0

我想是的。我如何测试版本以确保? – GrandTim

+0

@tadman:据我所知,Visual Studio没有像那样的“模式”。基本上,你会得到你所得到的。 –

回答

5

VS2013 doesn't support Unicode string literals。如果你想要它们,你需要更新到VS2015。

你也可以使用实际的C++ string文字(如u8"áááá"s),不是单纯的C-风格字符串(如u8"áááá"),其中VS2015 supports so long as you include the necessary using namespace for them

using namespace std::string_literals; 
+0

wtf:'std :: string_literals'负责操作符“”s(“hi”s - >'std :: string')而不是'u8' – fnc12

+0

@ fnc12:True。我将这两个特性混为一谈,如果继续使用C风格文字,那么不需要使用'using'。我已经编辑来纠正这种情况(因为其他原因使用文字仍然是一个好主意,例如,当编译器知道字符串长度时,避免运行时扫描'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