2010-09-27 2 views
1

Можно создать дубликат:
C++ convert int and string to char*C++ преобразование int в массив символов?

Здравствуйте, я делаю игру, и у меня есть табло в нем. Оценка хранится в переменной int, но для библиотеки, используемой для игры, требуется массив символов для вывода текста для моего табло.

Так как я могу превратить int в массив символов?

int score = 1234; // this stores the current score 

dbText(100,100, need_the_score_here_but_has_to_be_a_char_array); 
// this function takes in X, Y cords and the text to output via a char array 

Библиотека, использующая DarkGDK.

tyvm :)

ответ

8
ostringstream sout; 
sout << score; 
dbText(100,100, sout.str().c_str()); 
+5

Это тоже мое предложение. Просто имейте в виду, что .str() возвращает временный объект, поэтому кэширование результата .str(). C_str() - это BAD IDEA. (Это не относится к вашему примеру, но я хотел быть уверенным, что был указан оговорка). – Tim

0
char str[10]; 
sprintf(str,"%d",value); 
+0

не забывайте, что ваша полуколона: D –

+3

'value = -1000000000' и ​​... poof! Ваш код больше не работает. – ybungalobill

+0

@ybungalobill: Я ожидаю, что люди, использующие ответ, подумают и поймут, что они делают - вот почему код - пример ... Забавно, что есть еще один ответ с той же самой проблемой, для которой ни один голос не был данный. – Shaihi

2

Вы можете использовать std::ostringstream для преобразования int к std::string, а затем использовать std::string::c_str() передать строку в качестве char массива вашей функции.

1
char str[16]; 
sprintf(str,"%d",score); 
dbText(100, 100, str); 
0

Ну, если вы хотите, чтобы избежать функции C стандартной библиотеки (snprintf и т.д.), вы можете создать std::string обычным способом (std::stringstream и т.д.), а затем использовать string::c_str() получить char *, который вы может перейти к вызову библиотеки.

3

Использование sprintf

#include <stdio.h> 

int main() { 
    int score = 1234; // this stores the current score 
    char buffer [50]; 
    sprintf (buffer, "%d", score); 
    dbText(100,100,buffer); 

} 
0

Позвольте мне знать, если это помогает.

#include <iostream> 
#include <stdlib.h> 
using namespace std; 

int main() { 
    char ch[10]; 
    int i = 1234; 
    itoa(i, ch, 10); 
    cout << ch[0]<<ch[1]<<ch[2]<<ch[3] << endl; // access one char at a time 
    cout << ch << endl; // print the whole thing 
} 
Смежные вопросы