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

Anmelden zum Antworten