如何在保留'\ 0'字符的同时将std :: string转换为LPCSTR?
我想在OPENFILENAME.lpstrFilter上使用结果,该结果要求过滤器包含'\ 0'作为分隔符.
std :: string.c_str()似乎剥离和修剪'\ 0'
提前致谢!
==========================
(如何在论坛中正确添加评论,如回复帖?)
看完你的评论后,我继续仔细检查这个片段:
std::string filter = "Terrain Configuration (*.tcfg)\0*.tcfg\0\0";
const char* f1 = "Terrain Configuration (*.tcfg)\0*.tcfg\0\0";
const char* f2 = filter.c_str();
for(int i = 0; i < 50; i++)
{
char c1 = *(f1 + i); // works
char c2 = *(f2 + i); // doesn't work. beyond the first \0, it's garbage.
}
Run Code Online (Sandbox Code Playgroud)
我错误地认为c_str()或LPCSTR是如何工作的?
如何将QString转换为LPCSTR?
如果定义#ifdef UNICODE并且不定义#ifdef UNICODE,我该怎么做?
非常感谢 :)
当我尝试这样做时,我只是在搞乱模板:
template<typename T> void print_error(T msg)
{
#ifdef PLATFORM_WIN32
::MessageBox(0, reinterpret_cast< LPCSTR >(msg), "Error", MB_ICONERROR|MB_OK);
#else
cout << msg << endl;
#endif /* PLATFORM_WIN32 */
}
Run Code Online (Sandbox Code Playgroud)
当然,如果你通过std::stringas,这显然是行不通的T.因为字符串不能转换为a char*,但是这个函数是否可以以允许我传递c样式char*数组和c ++ std::string作为参数的方式进行编码,并将它们转换为LPCSTR?
我怎样才能转换std::ostringstream成LPCSTR?
std::ostringstream oss;
[...]
LPCSTR result = oss.str();
Run Code Online (Sandbox Code Playgroud)
结果: Error: No suitable conversion function from "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" to "LPCSTR" exists
我正在为WindowsCE CAB文件实现自定义操作,我需要连接LPCTSTR以获取到exe的正确路径.
我的自定义操作接收LPCTSTR作为参数.
所以(伪代码):
extern "C" codeINSTALL_EXIT MYCUSTOMACTION_API Install_Exit(
HWND hwndParent,
LPCTSTR pszInstallDir,
WORD cFailedDirs,
WORD cFailedFiles,
WORD cFailedRegKeys,
WORD cFailedRegVals,
WORD cFailedShortcuts
)
{
if (FALSE == LaunchApp(pszInstallDir + "\\MyApp.exe"))
::MessageBox(hwndParent, L"Could not launch app!", L"Setup", MB_ICONINFORMATION );
return codeINSTALL_EXIT_DONE;
}
Run Code Online (Sandbox Code Playgroud)
这是使用虚构的"+"运算符,我将使用我的标准语言C#.
我在C++方面的经验相对较少.为我的目的附加LPCTSTR的正确方法是什么?LaunchApp方法使用此类型作为参数.
另外,如果我想在MessageBox中显示生成的路径(用于调试目的),是否有快速转换为LPCWSTR的方法?
我正在使用 Visual Studio 2010 MFC 构建 C++ 程序。我的程序调用一个不属于项目的 DLL,并且它接受 char*。我有一个函数可以获取 LPCTSTR 格式的字符串。我已经在谷歌上搜索了大约两个小时,但没有找到解决方案。如何将 MFC LPCTSTR 转换为 char*。我发现的所有内容要么不起作用,要么只是无法编译。
我将LPCSTR转换为System :: String ^时遇到问题,但我可以将System :: String转换为带Marshal的LPCSTR.
但是我怎样才能将LPCSTR转换为System :: String ^
谢谢
在C++中,我有一个名为的字符串数组变量:
...
/* set the variable */
string fileRows[500];
...
/* fill the array with a file rows */
while ( getline(infile,sIn ) )
{
fileRows[i] = sIn;
i++;
}
Run Code Online (Sandbox Code Playgroud)
和一个具有以下内容的对象:
string Data::fileName(){
return (fileRows);
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个返回数组的函数,之后我想称之为:
Data name(hwnd);
MessageBox(hwnd, name.fileName(), "About", MB_OK);
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
不能将'std :: string*{aka std :: basic_string }'转换为'LPCSTR {aka const char }'以将参数'2'转换为'int MessageBoxA(HWND,LPCSTR,LPCSTR,UINT)'
如果我想显示数组的5.元素,如何转换它?