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