标签: lpcstr

将std :: string转换为LPCSTR,尾随或前导'\ 0'

如何在保留'\ 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是如何工作的?

c++ stdstring lpcstr

2
推荐指数
2
解决办法
1002
查看次数

如何将QString转换为LPCSTR(Unicode)

如何将QString转换为LPCSTR?

如果定义#ifdef UNICODE并且不定义#ifdef UNICODE,我该怎么做?

非常感谢 :)

c++ windows qt qt4 lpcstr

2
推荐指数
1
解决办法
1万
查看次数

使用std :: strings和c-style字符串时如何使用模板?

当我尝试这样做时,我只是在搞乱模板:

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

c++ string templates cstring lpcstr

2
推荐指数
1
解决办法
396
查看次数

std :: ostringstream到LPCSTR?

我怎样才能转换std::ostringstreamLPCSTR

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

c++ winapi std visual-studio lpcstr

2
推荐指数
1
解决办法
1511
查看次数

C++ concat LPCTSTR

我正在为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的方法?

c++ string windows-ce lpcstr

1
推荐指数
1
解决办法
1万
查看次数

C++ LPCTSTR 转 char*

我正在使用 Visual Studio 2010 MFC 构建 C++ 程序。我的程序调用一个不属于项目的 DLL,并且它接受 char*。我有一个函数可以获取 LPCTSTR 格式的字符串。我已经在谷歌上搜索了大约两个小时,但没有找到解决方案。如何将 MFC LPCTSTR 转换为 char*。我发现的所有内容要么不起作用,要么只是无法编译。

c++ mfc char converters lpcstr

1
推荐指数
1
解决办法
2万
查看次数

C++/cli将LPCSTR转换为System :: String ^

我将LPCSTR转换为System :: String ^时遇到问题,但我可以将System :: String转换为带Marshal的LPCSTR.

但是我怎样才能将LPCSTR转换为System :: String ^

谢谢

c++ string c++-cli marshalling lpcstr

1
推荐指数
1
解决办法
2823
查看次数

如何从std :: strings数组中检索特定元素作为LPCSTR?

在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.元素,如何转换它?

c++ arrays mfc stdstring lpcstr

0
推荐指数
1
解决办法
530
查看次数