2016-07-19 16 views
-6

ich Zahlen bekam von 0 bis 999. Wie kann ich das folgendeC++ int + char Umwandlung hinzufügen führende Nullen verkohlen

int i = 123;//possible values 0-999 
char i_char[3] = /*do conversion of int i to char and add 3 leading zeros*/ 

Beispiel (e) erreichen: i_char wird wie "001" suchen i=1, "011" für i=11 oder "101" für i=101

+0

Sie wollen eine 'std :: string', keine' char'. –

+0

warum nicht ein 'char'? – SemtexB

+0

Weil 'char' nur einen einzigen Buchstaben enthalten kann. –

Antwort

1

Es scheint, dass Sie nach sprintf suchen, oder vielleicht printf.

int i = 123; 
char str[10]; 
sprintf(str, "%03d", i); 
+0

** - 1 ** Die Verwendung des Typs unsafe 'sprintf' ist für einen Neuling sehr unvorteilhaft. Dito für die Verwendung eines RAW-Arrays. –

+0

Wenn Sie dies empfehlen, empfehlen Sie mindestens 'snprintf' – Slava

+1

Noobs sollte insgesamt weg von C++ bleiben :) –

5

Verwenden Sie ein std::ostringstream mit std::setfill() und std::setw(), zB:

#include <string> 
#include <sstream> 
#include <iomanip> 

int i = ...; 
std::ostringstream oss; 
oss << std::setfill('0') << std::setw(3) << i; 
std::string s = oss.str(); 
+0

Dies ist mehr wie ein Hinweis oder ein Kommentar als eine Antwort –

+1

@FirstStep: Lesen Sie weiter auf "Gib dem Mann einen Fisch". Bitte wähle nicht aus Unwissenheit, wie du es jetzt getan hast. –

+0

Abstimmung nach der Bearbeitung –

0

Da Sie die Frage mit c++ hier getaggt ist eine schnelle Lösung std::string und std::to_string mit:

#include <iostream> 
#include <string> 

int main() { 
    int i = 1; 
    std::string s = std::to_string(i); 

    if (s.size() < 3) 
     s = std::string(3 - s.size(), '0') + s; 

    std::cout << s << std::endl; 

    return 0; 
} 

Für i=1 wird es Ausgabe: 001.

+0

Bitte testen Sie mit' int i = 12345'. Überraschung? –

+0

Nun, er kann überprüfen, ob 's.size() <3'. Lass mich es bearbeiten. – DimChtz