我必须将LPCTSTR输入CreateProcess。
简短的问题是如何将std :: string转换为LPCTSTR?
(LPCTSTR lpApplicationName = (LPCTSTR)FilePath.c_str();
不起作用,CreateProcess只是忽略它,我知道我正在使用的路径等是正确的,因为如果我放入LPCTSTR lpApplicationName = L"a//test//path//and//file";
)它会完美地工作。
长问题(为什么我需要这样做)是:这个LPCTSTR必须包含我希望运行的文件的路径和名称。
过程是:
我已经尝试过使用其他种类的字符串,但到目前为止我还没有发现任何连接和字符替换都可以使用。
我见过的每个解决方案都不适用于我正在使用的Visual Studio 2010。感谢所有的建议。
答案 0 :(得分:3)
LPCTSTR
是指向const TCHAR*
的指针,而不是const char*
。根据您的UNICODE
和_UNICODE
设置,您需要 std::wstring
或std::string
。如果您遇到std::string
,则需要将char*
返回的c_str()
转换为wchar_t*
字符串(或不取决于UNICODE
)。
为了让自己的生活更轻松,我建议:
#ifdef _UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif