我的问题是参数只检索每个参数的第一个字母,我不知道为什么...有人能详细说明一下吗?
#include <Windows.h>
#include <string>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hpInstance, LPSTR nCmdLine, int iCmdShow){
LPWSTR *szArglist;
int nArgs = 0;
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
std::string a;
for(int i=0; i<nArgs; i++){
a += (LPCSTR)szArglist[i];
}
MessageBox(NULL, (LPCSTR)a.c_str(), (LPCSTR)a.c_str(), MB_OK);
LocalFree(szArglist);
return 0;
}
我认为问题出在 CommandLineToArgvW(GetCommandLineW(), &nArgs);
这行代码。
std::wstring
,并且可以通过将a
初始化为GetCommandLineW
并删除空格来替换 for 循环。 - chris0100000000000000
表示,而相同的位序列由ANSI字符表示为两个字符01000000 00000000
。现在它是一个字符的空结束字符串。 - Chris Cooperstd::wstring
与std::string
并没有什么不同。它们都是使用不同字符类型的typedefs。 - chrisstd::string
与LPCWSTR
一起使用,这是行不通的。LPCWSTR
与std::wstring
配合使用,LPCSTR
与std::string
配合使用,应避免使用LPCTSTR
,以免发疯。 - zwol