Frage zu atoi



  • Hallo,

    habe gerade erst angefangen unter Unix zu programmieren und hab gleich die ersten Probleme...
    also ich versuche in C++ Teile einer Datei einzulesen und dann in ein int array zu bekommen.

    #include <iostream>
    #include <string.h>
    #include <fstream>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char **argv) {
    
    using namespace std;
      string buffer;
      ifstream infile("adr");
      int array[12954];
      int x = 1;
    
      infile.seekg(0, ios::beg);
    
      while(!infile.eof()) {
        getline(infile, buffer);
        array[x] = atoi(buffer.substr(13, 6));
        x++;
        cout << array[x] << endl;
      }  
    
    }
    

    Mein Compiler (Sun ONE 7, Solaris 8, Sparc) gibt da folgendes aus:

    Error: Cannot cast from std::basic_string<char, std::char_traits<char>, std::allocator<char>> to const char*.
    1 Error(s) detected.

    Danke für irgendeinen Tip

    Julian



  • #include <iostream> 
    #include <string.h> 
    #include <fstream> 
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(int argc, char **argv) { 
    
    using namespace std; 
      string buffer; 
      ifstream infile("adr"); 
      int array[12954]; 
      int x = 1; 
    
      infile.seekg(0, ios::beg); 
    
      while(!infile.eof()) { 
        getline(infile, buffer); 
        array[x] = atoi(buffer.substr(13, 6).c_str());    //.c_str()!
        x++; 
        cout << array[x] << endl; 
      }   
    
    }
    

    Da es keine Funktion atoi(const string &str) gibt und string::substr ein Objekt der Klasse string (und nicht char * o.ä.) zurückgibt, musst du das string-Objekt in einen Zeiger auf char ( = C-String) umwandeln. Das geht mit "mystr.c_str()".



  • btw. sieht der C++ Weg so aus

    #include <string>
    #include <sstream>
    
    int main() {
      std::string str="1";
      std::stringstream sstr(str);
      int ergebniss;
      sstr >> ergebniss;
    }
    

Log in to reply