String to double[]



  • Hallo,

    wie weist man den inhalt eines strings einer position eines double-arrays zu?

    werte[j] = atof(eingabe);

    erzeugt folgenden Fehler:

    1>.\mittelwerte.cpp(66) : error C2664: 'atof': Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht möglich
    1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden



  • Klar funktionierts nicht, std::string und const char* sind zwei verschiedene Datentypen.

    std::string.c_str() gibt vom string ein const char* zurück, das kannst du nutzen.



  • Wären stringstreams nicht besser?

    #include <sstream>
    // ...
    std::istringstream is(eingabe);
    is >> werte[j];
    


  • Danke für eure Antworten 🙂

    Benutze ich: .c_str; kommt:

    .\mittelwerte.cpp(66) : error C3867: "std::basic_string<_Elem,_Traits,_Ax>::c_str": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&std::basic_string<_Elem,_Traits,_Ax>::c_str", um einen Zeiger auf den Member zu erstellen.
    1>        with
    1>        [
    1>            _Elem=char,
    1>            _Traits=std::char_traits<char>,
    1>            _Ax=std::allocator<char>
    1>        ]
    1>.\mittelwerte.cpp(66) : error C2440: '=': 'const char *(__thiscall std::basic_string<_Elem,_Traits,_Ax>::* )(void) const' kann nicht in 'double' konvertiert werden
    1>        with
    1>        [
    1>            _Elem=char,
    1>            _Traits=std::char_traits<char>,
    1>            _Ax=std::allocator<char>
    1>        ]
    1>        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    

    Benutze ich das selbe mit den () kommt folgendes:

    \mittelwerte.cpp(66) : error C2440: '=': 'const char *' kann nicht in 'double' konvertiert werden
    1>        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
    

    Bei letzterem weiß ich nicht wie ich das anwenden soll



  • Ich weiss ja nicht was du genau tust, aber folgendes funktioniert bei mir:

    #include <iostream>
    #include <cstdlib>
    #include <string>
    
    const short NMB_OF_VAL=3;
    
    int main(void){
    	std::string input="-200.505";
    	double values[NMB_OF_VAL];
    
    	for(int cnt=0;cnt<NMB_OF_VAL;cnt++){
    		values[cnt]=atof(input.c_str())+cnt;
    		std::cout<<values[cnt]<<std::endl;
    	}
    }
    

    Vielleicht hilft's dir ja?



  • MEETyA, c_str() gibt dir einen sogenannten C-String zurück, der in atof() benutzt werden kann. Natürlich kannst du den nicht direkt in das Array schreiben. goto anywhere hat den passenden Code ja bereits gepostet!


Anmelden zum Antworten