Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Pixel-Wizard

Frischling

  • »Pixel-Wizard« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

1

12.06.2013, 11:59

Int to String C

Hallo zusammen

Wie kann ich in C eine int variable in einen String schreiben? Hier ein Beispiel:

C-/C++-Quelltext

1
2
3
4
int number = 12343;
char string[6];

char string[6] = number;


Leider geht es so logischerweise nicht. Wie ist dies denn sonst noch möglich?

Liebe Grüsse
Pixel-Wizard
Träume werden wahr, wenn du sie war werden lässt.


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

12.06.2013, 12:10

Da fallen mir spontan itoa, sprintf und unter C++ stringstream ein.
Auch sei der lexical_cast aus Boost erwähnt, der aber vllt. etwas overkill wäre. Und seit C++0x gibt es std::to_string.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

12.06.2013, 17:46

Bleibt noch zu erwähnen, dass

C-/C++-Quelltext

1
char my_string[6];

einfach nur ein Charakter Array ist, dass einem früher oder später unglaublich viele Probleme bereiten wird. Du solltest stattdessen das hier benutzen:

C-/C++-Quelltext

1
2
#include <string>
std::string my_string;

Alleine schon, weil du dir ab dann über die Länge keine Gedanken mehr machen musst.
Lieber dumm fragen, als dumm bleiben!

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

4

13.06.2013, 00:56

Ich bezweifle mal, dass std::string & Co. Bestandteil von C sind. itoa(...) ist also eher, was hier gesucht wird.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

13.06.2013, 01:20

In C++ werden aber grad von Anfängern oft C-Strings verwendet. Deshalb vermutlich der Hinweis auf std::string. Natürlich hast du aber recht, dass ist dann C++ und nicht mehr C.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

6

13.06.2013, 16:19

Entsprechend wäre hieraus der Rat heraus zu deuten, dass C-Anfänger zum Lernen doch lieber auf C++ umstiegen? Wäre jedenfalls angesichts einiger Features wie std::shared_ptr<> und std::vector<> recht sinnvoll.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

13.06.2013, 16:33

Nein halt da verstehst du mich falsch. Ich rede von C++ Anfängern. Die meisten, bzw wenigstens ein Großteil hier im Forum fängt hier mit C++ an. Oft wird dann aber eher ein Mix aus C und C++ gelernt. In den Büchern werden C-Strings gezeigt (was ja auch seine Berechtigung hat) und so Dinge wie std::string etc kommt eher am Rand vor (oder halt am Ende vom Buch). C hat seine Berechtigung. Und wer C einfach aus Spaß an der Freude entwickeln möchte darf das natürlich auch gerne. Wenn man sich aber als C++ Entwickler schimpft, dann sollte man meiner Meinung nach auch gucken welche Möglichkeiten einem C++ liefert. Neben std::string gibts dann ja die von dir genannten Features und noch einige mehr. Die beiden Sprachen werden halt oft vermischt und das führt oft zu hässlichem Code wie ich finde.
Also Pixel-Wizard, wenn du mit C arbeitest, dann ist atoi was du suchst, wenn du mit C++ arbeitest wäre std::string vermutlich die bessere Lösung.

PS: Bei uns in der Uni wurde in einem Kurs auch C++ verwendet. In den paar Einführungsseiten zur Sprache war dann auch mehr C als C++ drin. Alles ziemlich hässlich. Aber Hauptsache der dumme Tutor hat sich aufgespielt und sich über die Windowsuser lustig gemacht. Leider hatte er selbst nicht besonders viel Ahnung was Entwicklung angeht. Maximal das Uniwissen. Von daher werden die Sprachen nicht nur von Anfängern zusammen geschmissen, sondern selbst von Dozenten und Tutoren an der Uni.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

13.06.2013, 18:32

Wenn es wirklich pures C sein soll, dann besser snprintf(), itoa() ist nicht nur nicht Teil von Standard C, sondern potentiell problematisch und in einem ernsthaften Projekt auf jeden Fall zu vermeiden, da es weder die Länge des übergebenen Buffers berücksichtigt, noch irgendeine sinnvolle Möglichkeit zur Fehlerbehandlung bietet.

9

14.06.2013, 10:18

Entsprechend wäre hieraus der Rat heraus zu deuten, dass C-Anfänger zum Lernen doch lieber auf C++ umstiegen? Wäre jedenfalls angesichts einiger Features wie std::shared_ptr<> und std::vector<> recht sinnvoll.

Hm, gar nicht gesehen, dass in der Frage explizit C stand.
Andererseits würde ich tatsächlich dazu raten, C++ zu benutzen, wenn man nicht einen wirklich guten Grund für C hat (z.B. nur einen C-Compiler zur Verfügung). Immerhin kann C++ alles, was C kann, nur kann man die meisten Dinge einfacher, schneller und robuster machen.
Lieber dumm fragen, als dumm bleiben!

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

10

14.06.2013, 18:43

Gibt es denn noch gängige C-Compiler ohne C++-Compiler? clang=>clang++, MSVC=>MSVC++, gcc=>g++ D:

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Werbeanzeige