我试图使用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