如何在保留'\ 0'字符的同时将std :: string转换为LPCSTR?将std :: string转换为带有尾部或前导' 0'的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.
}
是我错了就c_str()或LPCSTR是如何工作的?
见http://msdn.microsoft.com/en-us/library/ ms646839%28VS.85%29.aspx:'lpstrFilter:缓冲区中的最后一个字符串必须以两个空字符结尾。您需要**两个** NULL字符才能正确使用该参数。 'c_str()'按设计只有一个。 – AshleysBrain 2010-10-08 14:08:26
是的,我知道这个事实。 – Jake 2010-10-08 14:39:42