2017-09-05 8 views
0

문자열 리터럴 등을 배우려고 노력하고 있습니다. 현재 두 개의 문자열 리터럴에 "문자열"메서드가 추가 된 문자열을 연결할 수 없다는 문제에 직면 해 있습니다.C++ string_literals s postfix 위와 같은 방법으로 문자열을 결합 할 수 없습니다.

std::string concat = "Hello, "s + "World!";

내가 문자열로 캐스팅하면 어떤 컴파일러 오류가하거나 연결하는 문자열 생성자를 호출하지 않습니다.

실제로 유니 코드 문자를 출력하는 데 문제가 있습니다. 나는 코드의 다른 곳에서 cout을 사용한다.

constexpr wchar_t* surname = L"shirts \u0444 \u1300";

출력 셔츠하지만 유니 코드 문자 때 wcout << surname; 내가 진수를 얻을 난 그냥 cout을 성합니다.


편집 : 의견에 감사드립니다. wcout의 문제점을 이해했습니다. 나는 그것이 wstring에서만 작동한다는 것을 깨닫지 못했고 나는 아직 완전히 이해하지 못했던 두 가지를 섞지 않는 것에 대한 내용을 읽으므로 보통의 한마디를 피했습니다.

wchar_t *에서 출력 할 심볼을 얻을 수 없으며 일반 ASCII 문자 만 출력합니다.

지금까지 답장을 보내 주셔서 감사합니다.


wcout은 u8로 표시된 일반 문자는 작동하지만 다른 것은 없습니다. 몇몇 wcout 문은 셔츠가 실패한 후에는 아무 것도 출력하지 않고, 나는 그것들을 옮기고 프린트 아웃했다.하지만 예상대로 캐릭터가 아니라 16 진수였다. 지금까지는 일반적인 char *만이 작동했습니다. 여기에는 두통이 ...

+7

'넓은 문자열입니다 wcout','표준 : : wstring의 단지. –

+0

* "실제로 유니 코드 문자를 출력하는 데 문제가 있습니다."* : 셸이 유니 코드를 지원합니까? – Jarod42

+0

저는 Visual Studio를 사용하는 Windows 10입니다. 2017 – eternalNoob

답변

0

없이 유니 코드 콘솔 출력에 관해서는, 당신이 로케일을 설정해야 할 수도있다, 즉 :

std::setlocale(LC_ALL, ""); 
constexpr wchar_t* surname = L"shirts \u0444 \u1300"; 
wcout << surname; 
+0

로케일을 설정했지만 여전히 작동하지 않습니다. IT는 단지 wcout 명령문의 다음 몇 가지가 작동하지 못하게하는 기호를 출력하는 것이 아닙니다 ... – eternalNoob