как передать строку с помощью строковой переменной в функцию в C ++

0

У меня есть функция с параметрами по умолчанию, которая отображает текст для экрана. Что-то вроде этого:

DrawScreenString(int, int, string, int uicolor, font);

Однако я пытаюсь передать строчную переменную "livesRemaining" следующим образом:

DrawScreenString(10, 5, "Lives  : %d ",livesRemaining, 0xF14040, NULL);
livesRemaining = 3

Поэтому из-за того, что функция принимает только 5 аргументов, она не скомпилируется, потому что функция думает, что я пытаюсь передать 6-й аргумент, не зная, что я пытаюсь добавить строку к уже существующей строке "Lives" :"

Вот что я хочу, чтобы результат выглядел так:

Live   : 3

Я знаю, что это неправильный способ сделать это, как я это делаю? Огромное спасибо !!

  • 1
    Я думаю, что вы просто ищете std::to_string .
  • 0
    Пожалуйста, проверьте вопрос еще раз, я просто обновил его :)
Теги:
sdl

2 ответа

1
Лучший ответ

Если вы используете компилятор с поддержкой С++ 11 в нем, вы можете использовать метод to_string, о котором упоминал Крис (http://www.cplusplus.com/reference/string/to_string/?kw=to_string)

DrawScreenString(1,5, "Lives Remaining: " + std::to_string(livesRemaining), 0xF00000, NULL).

Однако, если ваш компилятор не имеет функции to_string, вы можете использовать строковый поток для создания (http://www.cplusplus.com/reference/sstream/stringstream/stringstream/) или sprintf в буфер символов, а затем построить string из буфера символов. Мне лично не нравится опция sprintf из-за фиксированного буфера и проблемы с переполнением буфера, если вход не проверен, но это опция.

Изменение: пример с добавлением строкового потока для каждого запроса OP:

#include <sstream>
...
std::stringstream ss;
int livesRemaining = 5;
ss << "Lives remaining: " << livesRemaining;
DrawScreenString(1,5, ss.str(), 0xF00000, NULL);
  • 0
    Проблемы с sprintf могут немного исчезнуть при использовании snprintf .
  • 0
    Не знаю, почему я не подумал об этом, но согласился.
Показать ещё 1 комментарий
0

Вы можете добавить строку "Lives:" в переменную livesRemaining следующим образом:

"Lives  : %d :"+Integer.toString(uicolor)

ИЛИ

"Lives  : %d :"+uicolor + ""

ИЛИ

"Lives  : %d :"+String.valueOf(uicolor)

Наконец, выглядя так:

DrawScreenString(10, 5,"Lives  : %d :"+Integer.toString(uicolor), 0xF14040, NULL);
livesRemaining = 3
  • 1
    Пожалуйста, проверьте вопрос еще раз, я просто обновил его :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню