2017-02-19 15 views
2

코드 블록을 사용하여 C++ 프로그램을 작성하고 있습니다. std::wstring 유형의 히브리어 문자열을 넣고 싶지만 작동하지 않습니다.코드 블록에서 wstring을 히브리어 문자열 리터럴로 설정할 때 오류가 발생합니다.

나는이 작성하는 경우 :

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

내가 문자열 리터럴 전에 "L"을 사용하는 경우, 즉

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

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

컴파일을, 그것은 나에게 오류를 제공합니다

다음 오류를 제공합니다 :

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은 char 대신에 wchar_t 인 컴파일러에게 알려줍니다.

은 참조 : http://en.cppreference.com/w/cpp/language/string_literal

+0

내가 할 때 다른 오류 줄 : 오류 : 실행 문자 집합으로 변환 : 잘못된 인수 | –

+0

@ 해당 사항은 http://stackoverflow.com/questions/30190173/c-error-conversion-to-execution-character-set –

+0

을 참조하십시오. 스택 오버플로에 오신 것을 환영합니다! –

1

내가 그것을 얻었다.

나는 L을 다음과 같이 사용하기 전에 : str2 (L "שלום");

설정, 편집기, 인코딩 설정을 차례로 클릭하고 UTF-8을 선택하여 CodeBlocks 편집기를 설정하십시오. "기본 인코딩으로"를 선택하고 다른 모든 항목은 선택 취소하고 싶을 것입니다. UTF-8이 기본값이므로 -finput-charset을 컴파일러에 전달할 필요가 없습니다.

+2

iso-8859-8을 사용하지 마십시오. 세상의 99 %와 같은 UTF-8을 사용하십시오. 설정, 편집기, 인코딩 설정을 차례로 클릭하고 UTF-8을 선택하여 CodeBlocks 편집기를 설정합니다. "기본 인코딩으로"를 선택하고 다른 모든 항목은 선택 취소하고 싶을 것입니다. UTF-8이 디폴트이므로 -finput-charset를 컴파일러에 전달할 필요가 없습니다. –

+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)를 읽으십시오. -sets-no-excuses /) –