Как преобразовать std :: string в LPCSTR, сохраняя символы '\ 0'?конвертировать std :: string в LPCSTR с конечным или ведущим ' 0'
Я хочу использовать результат на OPENFILENAME.lpstrFilter, который требует, чтобы фильтр содержал '\ 0' в качестве разделителей.
станд :: 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.'. Вам нужно ** два ** NULL символов в конце, чтобы этот параметр работал правильно; 'c_str()' по дизайну имеет только один. – AshleysBrain
Да, я знаю этот факт. – Jake