std::ostringstream для LPCSTR?
Как я могу конвертировать std::ostringstream
в LPCSTR
?
std::ostringstream oss;
[...]
LPCSTR result = oss.str();
Результат: Error: No suitable conversion function from "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" to "LPCSTR" exists
1 ответ
Как это:
std::string str = oss.str();
LPCSTR cstr = str.c_str();
Обратите внимание, что вы cstr
действует только до следующей модификации str
, Так что вы не можете, например, вернуть cstr
из функции, потому что str
является локальной переменной, которая вышла из области видимости
Вместо возвращения LPCSTR
из этой функции вернуть std::string
, Это позволяет избежать решения проблем на всю жизнь, если вы вернулись LPCSTR
, Если вы вернулись LPCSTR
Вы должны были бы выделить память и убедиться, что вы ее освободили. Именно такого рода вещи вы не хотите делать в коде C++. Итак, вернемся std::string
и позвонить c_str()
на этом объекте в точке, где вы вызываете функцию Windows API.