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.

6

Другие решения


По вопросам рекламы [email protected]