% in system("");
-
Du meinst die, die gerade ausgeführt wird? Grundsätzlich steht der ausgeführte Befehl in argv[0]:
#include <sstream> #include <cstdlib> int main (int argc, char* argv[]) { std::ostringstream os; os << "copy " << argv[0] << " datei01.txt"; std::system (os.str().c_str()); }Das geht aber nur, wenn die Datei direkt, mit vollem oder relativen Pfad aufgerufen wurde.
-
ostringstream os; os << "copy " << argv[0] << temp.str().c_str() << "\n"; system (os.str().c_str());Das mit dem argv Trick ist hilfreich
danke!Ich will, dass die eigene Datei in temp.str().c_str() kopiert wird. Das ist eine vorher angelegte Datei. Aber er kopiert nichts. Er legt nur eine leere Datei an.
-
Darthshoot3 schrieb:
ostringstream os; os << "copy " << argv[0] << temp.str().c_str() << "\n"; system (os.str().c_str());Das mit dem argv Trick ist hilfreich
danke!Ich will, dass die eigene Datei in temp.str().c_str() kopiert wird. Das ist eine vorher angelegte Datei. Aber er kopiert nichts. Er legt nur eine leere Datei an.
if(!sourcecode_is_given && !enough_information_is_given) answer = 0;
-
Also ich habe eine Datei erstellt. Ich will also die eigene Datei in diese Datei kopieren. Allerdings ist es nur möglich etwas in diese Datei reinzuschreiben, indem man die Datei als Variable definiert. Also als:
temp.str().c_str()Und wie bekomme ich jetzt argv[0] in (oberen Sourcecode) herein?
Also so geht es schonmal nicht:ostringstream os; os << "copy " << argv[0] << temp.str().c_str() << "\n"; system (os.str().c_str());
-
Warum so kompliziert?
system( ( string( "copy " ) + argv[ 0 ] + " datei01.txt").c_str() );
-
Weil die Datei nicht Datei01.txt heißt, sondern der Name in einer Variable ist:
temp.str().c_str()
und es demnach zu folge so heißen müsste, was übrigens auch nicht klappt

system(( string( "copy " ) + argv[0] + temp.str().c_str());
-
Du hast es geschafft jedes gepostete Beispiel so zu verhunzen, dass es nicht mehr funktioniert...
versuchs mal so (und mit denken!)
system( ( string( "copy " ) + argv[ 0 ] + " " + temp ).c_str() );
-
Oman ich weiß das ich net der hellste bin, aber das geht auch net

Wie kann denn das sein?
-
Also bei deiner Methode sind 17 Fehler drin.
Warscheinlich sollte ich was umändern, aber ich steige nicht dahinter...system( ( string( "copy " ) + argv[0] + " " + temp.str().c_str() );:\C-TESTORDNER\c-scripts\test\test.cpp(40) : error C2143: syntax error : missing ')' before ';'
D:\C-TESTORDNER\c-scripts\test\test.cpp(40) : error C2664: 'system' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be calledWas ist jetzt noch falsch?
-
Bastelt euch den String doch erstmal zurecht und nehmt dabei den +=Operator. Da erzeugt ihr nicht soviele Temporärstrings.
string text("copy "); text += argv[0]; text += " "; text += temp.str(); system(text.c_str());Das ist meiner Meinung nach viel übersichtlicher als diese langen Verkettungen und auch schneller, auch wenns hier nicht drauf ankommt.
-
ES HAT GEKLAPPT
DANKE!