나는 바보 같은 문제이지만 그것이 나를 미치게한다고 확신합니다.콘솔의 TCHAR [] 인쇄
콘솔에 TCHAR 어레이를 어떻게 인쇄 할 수 있습니까?
난에 errmsg를 인쇄해야DWORD error = WSAGetLastError();
TCHAR errmsg[512];
int ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, error, 0, errmsg, 511, NULL);
...
나는 바보 같은 문제이지만 그것이 나를 미치게한다고 확신합니다.콘솔의 TCHAR [] 인쇄
콘솔에 TCHAR 어레이를 어떻게 인쇄 할 수 있습니까?
난에 errmsg를 인쇄해야DWORD error = WSAGetLastError();
TCHAR errmsg[512];
int ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, error, 0, errmsg, 511, NULL);
...
무엇이 TCHAR
인지에 따라 다릅니다. 유니 코드 사용 가능으로 컴파일하는 경우 TCHAR
은 wchar_t
으로 정의됩니다. 그럼 당신은 예를 들어, std::wcout
를 사용할 수 있습니다
std::wcout << L"Error: " << errmsg << '\n';
, TCHAR
는 일반 char
이며, 당신은 std::cout
일반 사용할 수 있습니다
std::cout << "Error: " << errmsg << '\n';
감사합니다. :)! – hara
프로그램이'char' 또는'wchar_t'에 의존하게 만들려면 TCHAR을 사용하는 것이 무엇이겠습니까? 그것의 요점은 당신이 사용하고있는 캐릭터 셋에 관계없이 작동하는 것입니다, 그렇죠? – Strigoides
@ Strigoides :'TCHAR' =='wchar_t'라고 가정하는 것이 꽤 일반적입니다. 거의 아무도'TCHAR' =='char'을 사용하지 않습니다. 나는 그것이 무의미하다는 것에 동의하지만, 여전히 MFC를 사용하는 사람들에게는 이것이 표준이라고 생각한다. –
는 구글 검색은 기본적으로 tprintf을 권장 this discussion를 한 것으로 밝혀졌습니다.
#include <tchar.h> /* _tprintf */
DWORD dwError;
BOOL fOk;
HLOCAL hlocal = NULL; // Buffer that gets the error message string
fOk = FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, dwError, 0, (PTSTR) &hlocal, 0, NULL);
if (! fOk) hlocal = TEXT("Fehler FormatMessage");
_tprintf(TEXT("%d\t%s\n"), dwError, hlocal);
if (fOk) LocalFree(hlocal);
정말하지 이유는 알지만이 코드는 저에게 효과적이었습니다.
TCHAR NPath[MAX_PATH];
DWORD a = GetCurrentDirectory(MAX_PATH, NPath);
string b = "";
for(int i=0; i<a;i++){
b+=NPath[i];
}
cout << b;
system("pause");
미안하지만, 왜 그것이 작동하는지 지금 설명 할 수는 없으며 지금 검색 할 시간이 없습니다. 후에!
프로그램에 UTF16을 콘솔에 올바로 작성하게하더라도 Windows 콘솔은 UTF16과 호환되지 않으므로 가비지 만 표시 될 수 있습니다. 해결 방법은 다음 질문을 참조하십시오. http://stackoverflow.com/q/10764920/845092 –