Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » std::string zu int

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.12.2007, 23:16 Uhr
mischa
Fragender


Hallo,
ich habe ein Programm in dem ich verschiede Daten in Dateien abspeichern und laden muss.
Zum laden benutze ich getline(). Das Problem ist das getline() ja einen string als Parameter erwartet aber manche Daten sind Zahlen int z.B. Wie kann ich jetzt ein std::string in ein int konvertieren, bin grad irgend wie voll auf dem Schlauch.
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.12.2007, 23:55 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <sstream>

template<typename from, typename to> to convert(from const &x) {
  std::ostringstream os;
  to ret;

  os << x;
  os >> ret;

  return ret;  
}

// ...

#include <string>

std::string s = "123";
int x = convert<int>(s);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 04.12.2007 um 23:56 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.12.2007, 15:24 Uhr
xXx
Devil


lad es doch direkt per operator>> als int ... an sonsten wie 0xdeadbeef geschrieben hat, oder einfach mal bei google.de nach lexical_cast gucken ... ist bsw. in boost implementiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.12.2007, 15:40 Uhr
Kest
saint


Komisch, bei mir wird nur so kompiliert:

C++:
template<typename to, typename from> to convert(from const &x) {
  std::stringstream os;
  to ret;

  os << x;
  os >> ret;

  return ret;
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.12.2007, 16:10 Uhr
xXx
Devil


ehm muss auch ^^ hat er sich wohl vertan, weil man in dem Fall spezialisieren würde:

C++:
#include <sstream>
#include <string>

template<typename _Frm, typename _To> lexical_cast(_Frm const& data)
{
    std::stringstream ss;
    ss << data;
    _To result;
    ss >> result;
    return result;  
}

template<typename _To> lexical_cast(std::string const& data)
{
    std::ostringstream ss(data);
    _To result;
    ss >> result;
    return result;
}
^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.12.2007, 17:02 Uhr
0xdeadbeef
Gott
(Operator)


Eh, ja. Denkfehler.

Das Prinzip sollte aber klar sein, oder? Übrigens, xXx, in deinem lexical_cast muss das dann ein istringstream sein.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.12.2007, 17:16 Uhr
mischa
Fragender


Danke genau das habe ich gebraucht.
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.12.2007, 21:14 Uhr
xXx
Devil


ahh ja stimmt beefy ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: