2017-03-16 31 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