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; }