我試圖使用beginthreadex創建一個線程,該線程將運行一個將char作爲參數的函數。儘管如此,我在C++方面很糟糕,但我無法弄清楚如何將char轉換爲const char ,beginterrex需要它的參數。有沒有辦法做到這一點?我發現很多問題將char轉換爲const char,但不是const char *。C++將char轉換爲const char *
6
A
回答
9
char a = 'z';
const char *b = &a;
當然,這是在堆棧上。如果你需要在堆上,
char a = 'z';
const char *b = new char(a);
+0
問題是關於C++,所以你可能想用'new'來代替。 – filmor
+0
@filmor,你是對的。完成。 –
0
如果函數需要一個const指針退出的字符,你應該與保羅·德雷珀的答案去。但請記住,這不是一個指向空終止字符串的指針,函數可能期望的是什麼。如果你需要一個指向空結尾的字符串,你可以使用std::string::c_str
f(const char* s);
char a = 'z';
std::string str{a};
f(str.c_str());
0
既然你沒有表現出來,很難確切地知道自己想要什麼的任何代碼,但這裏是一個方法來調用一個函數期待一個字符爲一個線程中的一個參數。如果你不能改變函數來轉換參數本身,你需要一個蹦牀函數來坐在中間來做這件事,然後調用實際函數。
#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. 在C++中將char *轉換爲const char *
- 2. 不能將'const char *'轉換爲'char * const *'
- 3. 不能將Const Char [21]轉換爲Char?
- 4. 將const char *轉換爲char *的問題
- 5. 將NSString轉換爲const char
- 6. 將NSString轉換爲const char *
- 7. 將const char *轉換爲int
- 8. 將UIImage轉換爲const char *?
- 9. 將char *轉換爲char? C++
- 10. 將uint32轉換爲const char * C++
- 11. 如何將const char * const轉換爲const char *
- 12. C++:爲什麼我們不能將char **轉換爲const char **
- 13. 從'char'到'const char *'的C++ strcmp轉換
- 14. C++轉換2維char數組const char **
- 15. C++爲const char *爲const char * const的
- 16. 「從'const char *'無效轉換爲'char'[-fpermissive]」
- 17. 轉換無效從CHAR爲const char *
- 18. 轉換型「的char **」,以「爲const char **」
- 19. 爲什麼我不能在C中將'char **'轉換爲'const char * const *'?
- 20. C++ char const char *
- 21. 從const void轉換爲char?
- 22. 轉換爲const char *到LPCTSTR
- 23. 轉換BSTR爲const char *
- 24. int轉換爲const char *
- 25. 從`const char *'轉換爲`byte'
- 26. 如何爲const WCHAR *轉換爲const char *
- 27. 如何爲const char *轉換爲const WCHAR *
- 28. 轉const const wchar_t *爲const char *
- 29. C++從LPCTSTR轉換爲const char *
- 30. C++:字符**爲const char **轉換
您可以將'char *'隱式轉換爲'const char *'。不需要做任何事情。 – asveikau
@asveikau:這不會幫助你將'char'值傳遞給需要指針的東西。 –
根據文檔(http://msdn.microsoft.com/en-us/library/kdzttdcb.aspx)'beginthreadex'想要一個'void *'。 – dalle