преобразовать int в char* для печати

Я хочу, чтобы значение int отображалось на экране в виде строки. Это для игры, которую я делаю в opengl. У меня есть что-то вроде этого:

char *string = "0"; // to declare

sprintf (label,"%d" ,string); // This prints 0

Это идеально подходит для печати 0 на экране, однако, как вы понимаете, я хочу, чтобы 0 менялся. Я попытался преобразовать int в строку и попытаться присвоить это char *string, но я думаю, что это невозможно. Я новичок в C ++, поэтому я мало что знаю об этом, я был бы очень признателен за вашу помощь в этом. Чего я хочу добиться, так это:

char *string = "0"; // to declare
int number = 90; // declare int to be converted;

sprintf (label,"%d" ,string); // This prints 90

Я нашел методы преобразования для методов int в char, но не решил свою проблему. Спасибо за вашу помощь заранее.


person Vico Pelaez    schedule 03.11.2012    source источник
comment
А как насчет printf с %d?   -  person Jon    schedule 03.11.2012
comment
какова роль int number во всем этом?   -  person juanchopanza    schedule 03.11.2012
comment
Существует множество способов преобразования [строки в целые числа и наоборот][1]. [1]: stackoverflow.com/questions/5290089/   -  person nogard    schedule 03.11.2012
comment
в основном число будет счетом, и он будет постоянно меняться, поэтому я хочу обновить счет на экране.   -  person Vico Pelaez    schedule 03.11.2012
comment
@Scooter: спросите автора, прежде чем вносить такое фундаментальное изменение в вопрос. Нет ничего, что указывало бы на то, что вопрос касается только C.   -  person Martin York    schedule 03.11.2012
comment
@LokiAstari Ну, было вот что: спасибо, но я использую не только С++, это игра для opengl, и чтобы иметь возможность распечатать это в opengl, мне нужно использовать его в этом формате. Благодарю вас! Перечитывая, я вижу просто, который я пропустил, потому что комментарий пришел в ответ на решение iostream C++, что, как я думал, означало, что он искал решение C.   -  person Scooter    schedule 03.11.2012
comment
Этот ответ может помочь вам. › stackoverflow.com/questions/5290089/   -  person dengjiebin    schedule 21.01.2013


Ответы (3)


Если все, что вы хотите сделать, это вывести число на экран, то вы можете выполнить потоковую передачу на std::cout:

#include <iostream>

int nubmer = ....;

std::cout << number;

В противном случае вы можете передать число в std::ostringstream и получить базовый const char*:

std::strimgstream o;
o << number;
const char* string_ = o.str().c_str();
person juanchopanza    schedule 03.11.2012
comment
Спасибо, но я использую не только С++, это игра для opengl, и чтобы иметь возможность распечатать это в opengl, мне нужно использовать его в этом формате. Благодарю вас! - person Vico Pelaez; 03.11.2012
comment
@juanchopanza Вопрос изначально был помечен как C++, когда вы ответили на него. Я пометил его как C, когда он сказал, что использует C. Тот, кто понизил голос, вероятно, видел ваш ответ C++ и не понял, что вы сделали его до того, как он был помечен. - person Scooter; 03.11.2012
comment
@Scooter OP говорит, что я использую не только С++, что означает, что с С++ все в порядке, если кто-то каким-то образом получает из этого char*. - person juanchopanza; 03.11.2012
comment
Да, я отменил два своих отрицательных голоса теперь, когда это было объяснено. - person Barmar; 03.11.2012

Использовать это:

std::stringstream val;

val << number;

val.str();         // Gets you a C++ std::string
val.str().c_str(); // Gets you a C-String
person Martin York    schedule 03.11.2012
comment
@Barmar вопрос был помечен как C++, и OP заявляет в комментарии, что я использую не только C++, что предполагает, что C++ в порядке, но в координации с некоторым API C. - person juanchopanza; 03.11.2012

   char label[100] = {"0"};
   printf("%s\n",label);
   int number = 90;
   sprintf(label,"%d",number);
   printf("%s\n",label);
   sprintf(label,"%d",number + 1);
   printf("%s\n",label);

выход:

0
90
91
person Scooter    schedule 03.11.2012
comment
Большое спасибо за вашу помощь, я новичок в этом, и я немного борюсь, спасибо! - person Vico Pelaez; 03.11.2012