У меня есть программа, в которой я хочу вывести список строк в окно консоли.Преобразование строки в char *
Эти строки приходят из моего food.getFoodName() метод (который возвращает строку) как «стейк», «Бургер», «Колбаса» и т.д.
Я выводя эти строки, используя петлю. Прежде чем я смогу вывести эти строки, мне нужно преобразовать текущую строку в цикле в const char *, чтобы я мог использовать ее в методе Draw_String().
Это код касается в этом процессе:
void DisplayFood(std::vector<Food> foods)
{
for (int i = 0; i < foods.size(); i++)
{
const char * c = foods.at(i).getFoodName().c_str();
Draw_String(10, i, c);
}
}
inline void Draw_String(int x, int y, const char *string)
{
// this function draws a string at the given x,y
COORD cursor_pos; // used to pass coords
// set printing position
cursor_pos.X = x;
cursor_pos.Y = y;
SetConsoleCursorPosition(hconsole, cursor_pos);
// print the string in current color
printf("%s", string);
} // end Draw_String
std::string Food::getFoodName()
{
return FoodName;
}
Мой вопрос, это преобразование не работает должным образом, и мой выход на экране в основном нечитаемые символы ASCII, как «|||| ||||||||||||||»
Я ноб на C++, делал это только 10 недель. Но проблема заключается либо в процессе преобразования (скорее всего), либо в методе printf.
Кто-нибудь знает, что я делаю неправильно? Буду признателен за любую помощь.
Если вы закомментировать 'SetConsoleCursorPosition' вызов, вы все еще получаете высокую производительность ASCii? – Kenney
Нерелевантно: 'c_str()' уже возвращает 'char const *'. Таким образом, вы можете напрямую, 'Draw_String (10, i, foods.at (i) .getFoodName(). C_str());' – 101010
Я знаю, но это не работает @ 101010 – Andros