char-to-integer
-
Ich brauche auch mal schnell Hilfe....
hab eine Zeile von Einsen und Minus-Einsen in einer Datei (.C) abgelegt, also so:
1 -1 -1 1 1 -1 -1 1
Es handelt sich dabei um eine Zeile einer mit Matlab generierten Hadamard-Matrix, die ich jetzt in einen Integer-Array einlesen lassen will.
Bisher hab ich nur einen Char-Array hinbekommen, dabei werden leider auch Leerzeichen und Minuszeichen sowie die Ziffern als Zeichen interpretiert, und wenn ich eine gewöhnliche char-to-integer Umwandlung machen will, bekomme ich natürlich die ASCII-Zahlenwerte geliefert.Wie interpretiert die Maschine also eine 1 als eine Zahl, und eine -1 als negative Zahl...und ignoriert dabei das Leerzeichen...?
Hat jemand eine Idee?
-
char buf[16] //man kann ja nie wissen, 2 muesste normal reichen int i; int array[length]; while( !fin.eof() ) { fin >> buf; array[i++] = atoi(buf); //ascii to int (wandelt Char-Arrays in Zahlen) }
-
#include <iostream> #include <sstream> #include <vector> using namespace std; int main () { string str = "10 20 -1 100 10000"; vector<int> ints; string::size_type pos; int tempint; while (str.length()) { stringstream ss; pos = str.find(" ", 0); if (pos==0) str = str.erase(0, 1); else { if (pos!=string::npos) { ss << str.substr(0, pos); str = str.erase(0, pos+1); } else { ss << str; str = ""; } ss >> tempint; ints.push_back(tempint); } } for (int i=0; i<ints.size(); i++) { if (i) cout << ":"; cout << ints[i]; } }
gleichzeitig mein erster versuch mit der stl. Also ich würde mich auch über verbesserungen freuen.;)
-
#include <algorithm> #include <fstream> #include <iterator> #include <sstream> #include <string> #include <vector> // ... std::ifstream in("datei.txt"); std::vector<int> zahlen; std::string zeile; std::istringstream isstr; std::getline(in, zeile); isstr.str(zeile); std::copy(std::istream_iterator<int>(isstr), std::istream_iterator<int>(), std::back_inserter(zahlen));