C++ strcpy funktioniert nicht richtig
-
Hallo,
ich versuche die Funktion strncpy zu verwenden. Die Funktion soll den Typ string in char* umwandeln. Ich habe folgenden Code geschrieben.
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { //Lesen des Txt-Dokumentes wo der Pfad (C:\\) gespeichert ist. string Pfad; ifstream input("C:\\datei.txt"); string line; while(std::getline(input, line)) { Pfad=line; } // Pfad ist jetzt C:\\ string WPfad; WPfad="START " + Pfad + "internet.htm"; //WPfad ist jetzt "START C:\\internet.htm" (habe ich getestet). char WPfad2 [200]; //Und jetzt die Umwandlung: char* strcpy(char WPfad2, string WPfad); //Umwandlung funktioniert nicht cout << WPfad2; //Damit Fenster sich nicht schließt: int tmp; cin >> tmp; }Der Sinn der Anwendung ist es statt cout, system(WPfad2) zu schreiben und das sich dann internet.htm öffnet. Da bei der Funktion system() keine Strings aktzeptiert werden, brauche ich strcpy(). Weiß jemand warum die Umwandlung mit strcpy() nicht funktioniert? Ich verwende Visual C++ 2008 Express Edition.
Danke schon jetzt für alle Antworten.
-
system(WPfad.c_str());
-
Fellhuhn schrieb:
system(WPfad.c_str());
Danke Fellhuhn.
Jetzt funktioniert der Code. Der funktionierende Code ist jetzt:#include <iostream> #include <fstream> #include <string> using namespace std; int main() { //Lesen des Txt-Dokumentes wo der Pfad (C:\\) gespeichert ist. string Pfad; ifstream input("C:\\datei.txt"); string line; while(std::getline(input, line)) { Pfad=line; } // Pfad ist jetzt C:\\ string WPfad; WPfad="START " + Pfad + "internet.htm"; //WPfad ist jetzt "START C:\\internet.htm" (habe ich getestet). char WPfad2 [200]; //Verändert: cout << WPfad.c_str(); //bzw. system(WPfad.c_str(); //Damit Fenster sich nicht schließt: int tmp; cin >> tmp; }Danke für die schnelle Antwort.

-
Übrigens:
//Und jetzt die Umwandlung: char* strcpy(char WPfad2, string WPfad);Das ist eine Funktionsdeklaration und kein Funktionsaufruf, somit wird auch nichts umgewandelt.
char WPfad2 [200];Das brauchst du ja jetzt nicht mehr.