Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String to 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
25.04.2007, 17:02 Uhr
~phi
Gast


Hi,
ich hab diesen Code, der Compiler meldet mir aber "372 cannot convert `std::string' to `const char*' in initialization ", wie geht das richtig?

Code:
     string returnValueString;
      returnValueString = "777";
      
      const char* str_int = returnValueString;
      int j = atoi(str_int);
      return j;

Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.04.2007, 17:05 Uhr
~phi
Gast


Hi,
hat sich erledigt, so gehts:

Code:
     string returnValueString;
      returnValueString = "777";
      
      const char* str_int = returnValueString.c_str();
      int j = atoi(str_int);
      return j;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.04.2007, 17:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


allerdings liefert atoi auch immer 0 wenn da müll im string steht.... nicht ganz ungefährlich...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.04.2007, 17:55 Uhr
~phi
Gast


Hi,
danke für den Tipp. Ich hab noch eine andere Frage. Ich habe diesen Code:

Code:
...
string returnValueString
tmpInt = asc(tmpString);
returnValueString = returnValueString + (char) tmpInt;
...



Nun scheint (char) tmpInt aber nicht wie von mir gedacht den ASCII Code (also z.b 127) zurück zuliefern, sondern das char (z.B. 'A'). Meine Frage: Wie kann ich also den integer-Wert in tmpInt zu String konvertieren?

Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.04.2007, 18:04 Uhr
0xdeadbeef
Gott
(Operator)



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

// ...

std::string s;
std::ostringstream osstr;
int x = 123;

osstr << "foo" << x << "bar";
s = osstr.str(); // s == "foo123bar"


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.04.2007, 21:09 Uhr
mike
Pinguinhüpfer
(Operator)


Oder

C++:
template<typename T>
bool convert(const std::string &s, T &x, bool failIfLeftoverChars = true)
{
  std::istringstream i(s);
  char c;
  if(!(i >> x) || (failIfLeftoverChars && i.get(c)))
    return false;
  else
    return true;
}



lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.04.2007, 01:16 Uhr
~phi
Gast


Vielen Dank, dieses Codes haben mir wirklich genutzt!!

Kann mir noch jemand sagen, wie ich nun einen String wieder nach Int wandle, ich habe diesen Code:

Code:
...
      MessageBox ( NULL, returnValueString.c_str(), "", MB_OK);
      const char* str_int = returnValueString.c_str();
      double j = atoi(str_int);
      return j;
...



Die Messagebox gibt die richtigen Werte aus (116101115116101114), doch die Konvertierung zu double liefert: 1552260602

Hat noch jemand einen Tipp?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.04.2007, 08:37 Uhr
ao

(Operator)


Die Zahl ist viel zu groß, die passt nicht in einen int (32 Bit, nehme ich an). Gibts auf deinem Computer 64-Bit-Integer und hast du Konvertierungsroutinen dafür, dann versuchs mal damit.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.04.2007, 13:48 Uhr
0xdeadbeef
Gott
(Operator)



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

// ...

std::string s = "123";
std::istringstream isstr;
int x;

isstr.str(s);
isstr >> x; // x == 123


Für Hin- und Herkonvertierung eignet sich da auch std::stringstream, dann geht z.B.

C++:
std::string s = 123;
std::stringstream sstr;
int x;

sstr << s << s;
sstr >> x; // x == 123123


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: