如何在保留'\ 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