2017-02-19 149 views
2

我正在使用代碼塊編寫C++程序。我想在std::wstring類型中添加一個希伯來語字符串,但它不起作用。在代碼塊中將wstring設置爲希伯來字符串文字時出現錯誤

如果我這樣寫:

std::wstring str2("שלום"); 

和編譯,它給了我這個錯誤:

error: no matching function for call to 'std::basic_string<wchar_t>::basic_string(const char [5])'| 

如果我使用 「L」 字符串文字之前,即

std::wstring str2(L"שלום"); 

然後它給出了錯誤:

error: converting to execution character set: Invalid argument| 
+0

如果您使用L來指示它是wchat_t,那麼您是否包含? – FrankS101

+0

http://stackoverflow.com/questions/32445388/hebrew-chars-in-c-coutcharchar –

+0

不要在你的程序的源代碼中使用非ASCII字符串,它不是可移植的,依賴於實現而且是不好的做法無論如何。話雖如此,你的源文件中使用了什麼編碼? –

回答

3

寬字符串文字的格式爲L"peace"。主要的L告訴編譯器這是一個wchar_t而不是char

請參見:http://en.cppreference.com/w/cpp/language/string_literal

+0

當我這樣做,它給了我其他的錯誤:錯誤:轉換爲執行字符集:無效的參數| –

+0

@רועינוה爲此,請參閱:http://stackoverflow.com/questions/30190173/c-error-conversion-to-execution-character-set –

+0

歡迎來到Stack Overflow! –

1

我得到它。

我以前用過L:str2(L「שלום」);

設置CodeBlocks編輯器,方法是單擊設置,然後編輯器,然後編碼設置,然後選擇UTF-8。您可能想要選擇「作爲默認編碼」並取消選擇其他所有內容。您不必將-finput-charset傳遞給編譯器,因爲UTF-8是默認的

+2

請勿使用iso-8859-8。使用全球99%的UTF-8。設置CodeBlocks編輯器,方法是單擊設置,然後編輯器,然後編碼設置,然後選擇UTF-8。您可能想要選擇「作爲默認編碼」並取消選擇其他所有內容。您不必將-finput-charset傳遞給編譯器,因爲UTF-8是默認值。 –

+0

tnx,它工作篦。 –

+0

אתהתמידמוזמן。另請閱讀[this](https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character - 無藉口/) –

相關問題