C++ mehrere Int zu einem String umwandeln

@GustlPC: Wir haben das Problem doch auch schon gelöst... mit und ohne sprintf... nur mal so am Rande...
Im Übrigen wandelt sprintf ja "nur" in einen C-String und nicht in einen C++-String, auch mal so am Rande. Wenn von C++ gesprochen wird gehe ich nun mal eher von den C++-Strings aus. Wobei man sich natürlich aus dem C-String einen C++-String machen kann...

Edit: Im Übrigen: Nicht funktonierende Lösungen sind auch nicht gefragt oder? Denn _dein_ Code funktioniert nicht. sprintf erwartet ein char[] und keinen string, weil sprintf eine C-Funktion ist...
 
Zuletzt bearbeitet:
Trotzdem geht sprintf nur mit einem char Array.
Und ein string Array ist nunmal was ganz anderes als ein char Array. ;)
 
Würde genauso wenig gehen.
Der String wäre dann konstant. :>
Höchstens ein StringStream, tmp.str().
 
er meinte wohl dass die Funktion am Ende den C-String so zurückliefert, hat aber nicht gemerkt, dass man den C-String für sprintf schon braucht...
 
oldsqldma schrieb:
Trotzdem geht sprintf nur mit einem char Array.
Und ein string Array ist nunmal was ganz anderes als ein char Array. ;)

ööhm casten kann ja jeder oder? gibt ja auch ziemlich viele funktionen dafür. Musst du halt wissen welcher kodierung dein projekt annimmt. wide oder unicode... oder garnichts...

nur so am rande... sprintf ist eine veraltete funktion. Es empfielt sich daher diese nicht zu benutzen. Aber wenn es für dich ehe wurscht ist dann kannst du es sicher noch benutzen.
 
Ich rate vom casten ab.
Es arbeitet nunmal mit einer Char Array, und das sollte man nicht ändern. (Könnte zu unerwünschten neben Effekten kommen).

Und veraltet heißt nicht schlecht.
Wer ANSI C programmiert, wird sie nicht missen wollen.
 
ja C ^^
was ist mit C++?
ööhm casten kann ja jeder oder? gibt ja auch ziemlich viele funktionen dafür.
bitte alles genau lesen! ;)

es ist natürlich je nach plattform wo man programmiert. bei VS empfiehlt sich sowieso string.format() oder CSTRING x(char). bla bla.... :D
 
wasn das für ne komische diskussion hier? einer hat weniger ahnung als der nächste... unter c/c++ ist hier ganz eindeutig sprintf bzw. snprintf zu nutzen. alles andere ist dünnschiss.
 
IceMatrix schrieb:
wasn das für ne komische diskussion hier? einer hat weniger ahnung als der nächste... unter c/c++ ist hier ganz eindeutig sprintf bzw. snprintf zu nutzen. alles andere ist dünnschiss.

Es hängt immer davon ab mit welche Bibliothek man arbeitet. Für Win würd ich sowieso string.Format("%i", int); nehmen. Mit SPRINTF in C++ arbeite ich garnicht. Ich muss nur in C damit arbeiten.

Also wenn man eine Ahnung haben will sollte man das englishe WIKI für printf, sprintf nehmen, da ist alles am besten ausgeschrieben!

Code:
char String[80]; //STRING MUSS EINE BESTIMMTE GRÖSSE HABEN in C
//will man chararray mit undefinierte grösse verwende (z.b. char *String) 
//so hat man probleme mit den rückgabewerten von eigenen funktionen!
//OpenSuse gcc C
int DeinInt = 100;
int i = sprintf(String, "%i", DeinInt);
//i ist die Länge des Strings.
 
Nunja, schonmal versucht "string" bei sprintf einzusetzen.
Ich glaub du laberst hier Dünnschiss.

Es gibt einen gewaltigen Unterschied zwischen char & string.
 
IceMatrix schrieb:
wasn das für ne komische diskussion hier? einer hat weniger ahnung als der nächste... unter c/c++ ist hier ganz eindeutig sprintf bzw. snprintf zu nutzen. alles andere ist dünnschiss.
Eigentlich hatte ich keine Lust mich an diesem Thread zu beteiligen, zumal schon richtige Lösungen vorhanden sind. Aber das schlägt dem Fass doch mal den Boden aus. Möchtest du dich in deine Reihe der Ahnungslosen vielleicht selbst einreihen? :rolleyes:

1. C und C++ sind zwei verschiedene Sprachen - eine ganz eindeutige Empfehlung der printf-Familie und dann auch noch für beide Sprachen ist irgendwie etwas fragwürdig.
2. Der OP hat nicht herausgestellt was er mit einem String meint - einen NTBS (null-terminated byte string) oder die Klasse std::string, daher kann wohl kaum s(n)printf als ultima ratio empfohlen werden
3. printf und Konsorten haben in C++ mehr oder minder ausgedient. ostreams, insbesondere Stringstreams sind eine wesentlich mächtigere und sicherere Ersetzung (siehe Lösung von 1668mib):
- typsicher, und das zur Compilezeit
- erweiterbar und können mit Non-POD-Typen umgehen (schonmal Non-PODs durch eine Ellipse übergeben?)
- sollten durch Typkenntnis zur Compilezeit schneller sein können, auch wenn sie das in der Regel trotzdem nicht sind
- automatisches Speichermanagement nimmt Arbeit ab und schließt Fehlerquellen aus
- sicher gegen Pufferüberläufe bei gleichzeitigem dynamischem Wachstum
- das Ergebnis kann immernoch in einen NTBS kopiert werden und somit nicht auf std::string beschränkt
 
Zuletzt bearbeitet:
Dem was 7H3 N4C3R schreibt ist eigentlich kaum noch was hinzuzufügen...

Man muss auch klar sagen: die s(n)prinft-Funktionen sind in C++ aus Gründen der C-Kompatibilität enthalten...
 
1668mib schrieb:
Man muss auch klar sagen: die s(n)prinft-Funktionen sind in C++ aus Gründen der C-Kompatibilität enthalten...
Dem ist aber noch was hinzuzufügen ;):
Die s(n)printf Funktionen waren noch nie "in C++". Die sind nach wie vor Teil der C Standardbibliothek.
Dass sie auch "in C++" verwendet werden können
 
Ja, und die C-Standardbibliothek liegt nun mal den meisten C++-Entwicklungsumgebungen bei ;-)
 
Zurück
Oben