headerproblem ?



  • hallo

    ich wollte einen array in einen string umwandeln und zwar folgendermaßen:

    [cpp]
    string inhalt;
    
    int d;
    
    for (int i=0;i<m;i++)
       {
        d=Part[i];
        char buffer[10]; 
        sprintf(buffer, "%g", d); 
        strcpy(inhalt,buffer);
       }
    
    [/cpp]
    

    part habe ich natürlich schon vorher deklariert, aber so müßte es laut tutorials hier ja eigentlich funktionieren, oder?

    leider kam vom compiler folgende meldung:

    no matching function for call to strcpy(std::string&, char[10])
    candidates are: char *strcpy(char*, const char*)

    also wenn ich mich nicht total täusche liegt es doch daran, dass ich den entsprechenden header nicht included habe, was ich eigentlich schon getan habe
    meine headerliste:

    [cpp]
    #include <math.h>
    #include <stdio.h>
    #include <iomanip>
    #include <stdlib.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <string>
    #include <sstream>
    #include <cstring>
    [/cpp]
    

    ich habe keine ahnung, wieso der compiler da einen fehler bringt...



  • Nein, das funktioniert garantiert nicht.
    strcpy benötigt einen char* und du übergibts einen std::string.

    Probierts so:

    // ...
    int d;
    char buffer[10];
    sprintf(buffer, "%g", d);
    std::string inhalt(buffer);
    // ...
    


  • Zudem einige Anmerkungen:

    #include <cmath>    // <- nicht math.h
    #include <cstdio>   // <- nicht stdio.h
    #include <iomanip>
    #include <cstdlib>  // <- nicht stdlib.h
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <string>
    #include <sstream>
    #include <cstring>
    

    Brauchst Du die wirklich alle???
    Ich bezweifle das.



  • thx.
    einige brauche ich natürlich nicht, aber ich habe sie aus versuchszwecken mal dringelassen.

    so funktioniert es zwar, aber bei der stringausgabe für

    [code]
    
    string inhalt;
    int d;
    
    for (i=0;i<m;i++)
       {
        d=Part[i];
        char buffer[m]; 
        sprintf(buffer, "%g", d); 
        string inhalt(buffer);
       }
    
    [/code]
    

    kommt bei

    [cpp] cout << inhalt;
    [/cpp]
    

    gar nichts.

    ich will mal mein vorhaben formulieren, nicht dass irgendwie aneinander vorbei geredet wird.
    ich habe einen array der größe m

    1 2 3 4 5 6

    und der sollte in einen string umgewandelt werden, der so aussieht:

    (1,2,3,4,5,6,)



  • std::stringstream str;
    for (i=0;i<m;i++)
    {
      str << Part[i];
      if( i<m-1) str << ",";
    }
    cout << str.str();
    


  • GENAU das habe ich auch schon mal versucht, jedoch anscheinend nicht richtig umgesetzt...

    tausend dank!



  • Hier noch kurz eine Variante ohne Schleife 🙂

    std::stringstream str;
    std::copy(Part, Part+m-1, std::ostream_iterator<double, char>(str, ", "));
    str << Part[m-1];
    cout << str.str();
    

Anmelden zum Antworten