char을 인수로 취하는 함수를 실행할 스레드를 생성하기 위해 beginthreadex를 사용하려고합니다. C++에서 나쁘다. char를 const char로 변환하는 방법을 알아낼 수 없다. , beginthreadex는 인수를 필요로한다. 그렇게 할 수있는 방법이 있습니까? 나는 char을 const char으로 변환하는데 많은 질문을하지만 const char *는 찾지 못한다.C++ char을 const char *로 변환 *
답변
char a = 'z';
const char *b = &a;
물론 이것은 스택에 있습니다. 힙에 필요할 경우
char a = 'z';
const char *b = new char(a);
질문은 C++에 관한 것이므로,'new'로 대신 할 수 있습니다. – filmor
@filmor, 당신 말이 맞아요. 끝난. –
함수가 종료 문자에 대한 const 포인터를 예상하는 경우 Paul Draper의 응답과 함께 이동해야합니다. 그러나 이것은 null로 끝나는 문자열에 대한 포인터가 아니라 함수가 기대할 수있는 것임을 명심하십시오. 당신이 종료 문자열을 null로 포인터를해야 할 경우 당신은 당신이 당신이 원하는 것을 정확히 알고 열심히 코드를 표시하지 않았기 때문에 std::string::c_str
f(const char* s);
char a = 'z';
std::string str{a};
f(str.c_str());
를 사용하지만, 여기에 문자로 기대 함수를 호출하는 방법입니다 수 있습니다 thread 내의 인수 인수 자체를 변환하는 함수를 변경할 수 없다면 중간에 앉아서 실제 함수를 호출하는 트램 폴린 함수가 필요합니다.
#include <Windows.h>
#include <process.h>
#include <iostream>
void ActualThreadFunc(char c)
{
std::cout << "ActualThreadFunc got " << c << " as an argument\n";
}
unsigned int __stdcall TrampolineFunc(void* args)
{
char c = *reinterpret_cast<char*>(args);
std::cout << "Calling ActualThreadFunc(" << c << ")\n";
ActualThreadFunc(c);
_endthreadex(0);
return 0;
}
int main()
{
char c = '?';
unsigned int threadID = 0;
std::cout << "Creating Suspended Thread...\n";
HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, &TrampolineFunc, &c, CREATE_SUSPENDED, &threadID);
std::cout << "Starting Thread and Waiting...\n";
ResumeThread(hThread);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
std::cout << "Thread Exited...\n";
return 0;
}
- 1. Arduino를 사용하여 문자열을 const char *로 변환
- 2. UIImage를 const char *로 변환 하시겠습니까?
- 3. const char *를 char *로 변환 할 수 없습니다. *
- 4. C++ const char * to const char * const
- 5. C++로 Android에서 const char *를 struct tm으로 변환
- 6. const wchar_t *를 const char *로 변환하십시오.
- 7. gcc가 char * 및 char을 원시 포인터 ("str"+ 'c')로 추가
- 8. char를 const char *로 변환하십시오. C++을 삽입하십시오.
- 9. const char 변환 오류
- 10. uint32를 const char * C++
- 11. 'char'에서 'const char *'로의 C++ strcmp 변환
- 12. 왜 "const int"에서 "int"로 변환하지만 "const char []"에서 "char *"로 변환되지 않습니다
- 13. 의미는 'char const * const c = ""'
- 14. 템플릿 함수에서 const char []를 const char *로 자동 변환합니다.
- 15. C++ char to const char *
- 16. const char * to const char **
- 17. 'System :: String ^'을 'const char *'vC++로 변환
- 18. MoSync에서 파일에 데이터 쓰기 (MAUtil :: String을 const char *로 변환)
- 19. const char을 const char에 어떻게 연결합니까?
- 20. Cython에서 char **을 const char **로 변환하는 방법?
- 21. 문제점 : CString을 C++ MFC의 const char *로 변환하는 방법
- 22. C char를 char *로 변환하십시오.
- 23. const char * int로 변환 하시겠습니까?
- 24. C++ LPCTSTR에서 const char *
- 25. const char * NSString *로 변환하고 다시 변환 - _NSAutoreleaseNoPool()
- 26. const 캐스팅을 사용하여 std 문자열을 char *로 변환
- 27. sscanf 오류 : '문자열'을 'const char *'로 변환 할 수 없습니다.
- 28. const char *를 non const char * 캐스팅 *
- 29. const char * Qt의 LPCWSTR에
- 30. C++ const char * overloading confusion
'char *'을'const char *'로 암시 적으로 변환 할 수 있습니다. 아무 것도 할 필요가 없습니다. – asveikau
@asveikau : 포인터를 원한다면 char 값을 전달하는 데 도움이되지 않습니다. –
문서 (http://msdn.microsoft.com/en-us/library/kdzttdcb.aspx)에 따르면'beginthreadex'는'void * '를 원합니다. – dalle