ubuntuusers.de

C++ int to string

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

munich

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 94

Wohnort: München

Hallo, ich programmiere unter Ubuntu mit geany 1.23 C++. Nun möchte ich eine int in einen string umwandeln, dazu habe ich im Internet (http://stackoverflow.com/questions/5590381/easiest-way-to-convert-int-to-string-in-c) u.a. folgende Möglichkeiten gefunden:

1)

1
2
3
int a = 10;
char *intStr = itoa(a);
string str = string(intStr);

2)

1
std::string s = std::to_string(42);

Allerdings geben beide beim kompilieren Fehlermeldungen... 1) → Fehler: »itoa« wurde in diesem Gültigkeitsbereich nicht definiert 2) → Fehler: »to_string« wurde in diesem Gültigkeitsbereich nicht definiert

Ich habe schon einiges zu diesen Problemen gelesen und es liegt wohl an der Compilerversion, allerdings bin ich einer Lösung nicht wirklich nähergekommen. Wie bekomme ich den Code zum laufen? (am besten 2, sonst 1) Vielen Dank schonmal!

Inkane

Anmeldungsdatum:
17. Oktober 2010

Beiträge: 306

Es wäre hilfreich, wenn du ein minimales, kompilierfähiges Beispiel mit Auruf des Compilers angegeben hättest:

1
2
3
4
5
6
7
8
9
#include <string>
#include <iostream>

int main(void) {
  int a = 10;
  auto s = std::to_string(a);
  std::cout << s << std::endl;
  return 0;
}

Kompiliert bei mir sowohl mit g++ -std=c++11 als auch mit clang++ -std=c++11; gcc Version war Version 4.8.1, clang 3.3.

genodeftest

Anmeldungsdatum:
10. April 2010

Beiträge: 81

Hast du die Header-Dateien eingebunden?

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Ich verweise auch mal auf C++ Referenz. Zitat: „This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.“ Aber auch sprintf ich nicht wirklich C++, sondern C.

Ich bevorzuge bei sowas den Streamoperator:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include <sstream>
#include <string>

int main(void) {
  int zahl = 10;
  std::ostringstream outstream;
  outstream << zahl;
  std::string str = outstream.str();
  std::cout << str << std::endl;
  return 0;
}

munich

(Themenstarter)

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 94

Wohnort: München

Danke für die Tipps, ich hatte bei geany nicht eingestellt, dass C++11 verwendet werden soll. Dabei hat mir http://stackoverflow.com/questions/14544325/c11-geany-setup geholfen.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Ich werfe mal Boost.Lexical_Cast in den Raum - insbesondere bei Fließkommazahlen kommt man da imho nicht drum herum!

Antworten |