gpt4 book ai didi

c++ - 如何将 wchar 值存储在双引号字符串中

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:30 27 4
gpt4 key购买 nike

在下面的代码中,我将 c:\windows\Microsoft.Net\Framework\v2.0.057 放入缓冲区。现在我想将上述值存储在双引号中 "c:\windows\Microsoft .Net\Framework\v2.0.057",我想将其传递给流程。如何在双引号中创建此路径....

  HINSTANCE hDLL = LoadLibrary(TEXT("mscoree.dll"));
FNPTR_GET_COR_SYS_DIR GetCORSystemDirectory = NULL;
GetCORSystemDirectory = (FNPTR_GET_COR_SYS_DIR) GetProcAddress (hDLL,"GetCORSystemDirectory");
if(GetCORSystemDirectory!=NULL)
{
WCHAR buffer[MAX_PATH + 1];
DWORD length;
HRESULT hr = GetCORSystemDirectory(buffer,MAX_PATH,&length);
std::string tbuf="\"buffer\"";
// std::string tbuf=" \""+(string)buffer+"\\InMageSQL.dll\" /codebase /tlb /silent";

if(S_OK==hr)
{
wcscat( buffer,L"RegAsm.exe" );
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); //(LPSTR)getcurrentpath.c_str()
if(!CreateProcess((LPCTSTR)buffer,(LPTSTR)strInMageSqlDll.c_str(),NULL, NULL,FALSE, 0,NULL,NULL,&si,&pi ) )
{
cout<<"CreateProcess failed "<<GetLastError()<<endl;
}

最佳答案

我在这里有点冒险,因为我最近几年没有使用太多 Windows API,而且我从未使用过 WCHAR .

首先,您可以稍微扩大缓冲区并将引号插入其中:

WCHAR buffer[MAX_PATH + 1 + 2];
buffer[0] = L'"';
buffer[sizeof(buffer)/sizeof(WCHAR)-1] = L'"';
DWORD length;
HRESULT hr = GetCORSystemDirectory(buffer,MAX_PATH+1,&length);

然而,这充其量似乎不够优雅。 (而且我需要三思而后行,我是否得到了 sizeof(buffer)/sizeof(WCHAR)-1 是对的——我太懒了。)

另一种方法是使用 std::basic_string<>模板。注意 std::stringtypedef对于 std::basic_string<char> .您也可以为其他字符类型实例化它:

WCHAR buffer[MAX_PATH + 1];
DWORD length;
HRESULT hr = GetCORSystemDirectory(buffer,MAX_PATH,&length);
std::basic_string<WCHAR> tbuf= L"\"" + buffer + L"\"";
// use 'tbuf.c_str()' to read 'tbuf' as a C-string (there's no safe way to write to it)

请注意,这假定 WCHAR扩展为 wchar_t .如果不是这种情况(我从来没有使用过它,所以我不知道),你必须转换文字:

std::basic_string<WCHAR> tbuf = static_cast<WCHAR>(L'"')
+ buffer
+ static_cast<WCHAR>(L'"');

关于c++ - 如何将 wchar 值存储在双引号字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1311945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com