Datei löschen
-
std::string (im Notfall auch char-Array, aber das solltest du dir gar nicht erst angewöhnen).
-
Kann mir mal wer ein beispiel geben ?
-
Klar - ich baue mal auf deinem Beispiel auf:
#include <iostream> #include <string> //std::string #include <cstdio> //remove() using namespace std; int main() { string entfernen; cout<<"Geben sie ein was sie Löschen wollen: \n"; cin>>entfernen; remove(entfernen.c_str());//remove() stammt noch aus C-Zeiten und kennt deshalb nur char* getchar(); }
-
ok thx

-
Guten Morgen,
da ich nicht extra einen neuen Thread aufmachen wollte und ich denke das das hier reinpasst wollte ich meine Frage hier stellen.
Also ich wollte für die Schule ein Programm schreiben was eine Datei vom Desktop löscht. Den Dateinamen soll man manuell eingeben können. Da ich nocht nicht soo viel Ahnung davon habe hoffe ich das ihr mir helfen könnt.
Bisher habe ich das geschrieben:
#include <iostream> #include <string> #include <stdio.h> using namespace std; int main() { string entfernen; cout<<"Geben Sie ein was geloescht werden soll: "; cin>>entfernen; remove(C:\\Dokumente und Einstellungen\\User\\Desktop\\entfernen.c_str()); getchar(); }Löschen einer Datei ist ja kein Problem aber ich weis nicht wie ich die Pfadangabe miteinbeziehen kann.
Danke schonmal für die Hile.
-
remove("C:\\Dokumente und Einstellungen\\User\\Desktop\\" + entfernen.c_str());
-
Danke schonmal aber wenn ich das mache kommt dieser Fehler:
Fehler 1 error C2110: '+': Zwei Zeiger können nicht addiert werden
-
remove( std::string( std::string( "C:\\Dokumente und Einstellungen\\User\\Desktop\\" ) + entfernen ).c_str( ) );greetz, Swordfish
-
Danke schön funktioniert jetzt alles ohne Probleme
.
-
#include <iostream> #include <string> #include <cstdio> const std::string desktop_path("C:\\Dokumente und Einstellungen\\User\\Desktop\\"); int main() { std::cout << "Welche Datei soll vom Desktop entfernt werden? "; std::string filename; std::getline(std::cin, filename); std::remove((desktop_path + filename).c_str()); std::cin.get(); }so jetzt das ganz in ordentlicher Form ...
-
(D)Evil schrieb:
so jetzt das ganz in ordentlicher Form ...
Die Ultimate-Edition:
#include <string> #include <iostream> #define UNICODE #define _UNICODE #include <windows.h> #include <shlobj.h> #include <tchar.h> namespace my_std_ext { typedef std::basic_string< TCHAR > tstring_t; # ifdef UNICODE std::wostream &cout( std::wcout ); std::wostream &cerr( std::wcerr ); std::wistream &cin( std::wcin ); # elif std::ostream &cout( std::cout ); std::ostream &cerr( std::cerr ); std::istream &cin( std::cin ); # endif /* UNICODE */ } namespace my_winapi_tools { enum csidl_t { csidl_desktop = 0 }; my_std_ext::tstring_t get_last_error_msg( ) { void *message_buffer = 0; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, GetLastError( ), MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), reinterpret_cast< LPTSTR >( &message_buffer ), 0, 0 ); my_std_ext::tstring_t error_message( reinterpret_cast< LPTSTR >( message_buffer ) ); LocalFree( message_buffer ); return error_message; } my_std_ext::tstring_t get_special_folder_path( int csidl, HWND owner = GetConsoleWindow( ) ) { TCHAR buffer[ MAX_PATH ] = { 0 }; SHGetSpecialFolderPathW( owner, buffer, csidl, false ); return my_std_ext::tstring_t( buffer ); } } int main( ) { my_std_ext::tstring_t file_to_remove = my_winapi_tools::get_special_folder_path( my_winapi_tools::csidl_desktop ); if( file_to_remove.empty( ) ) { my_std_ext::cerr << my_std_ext::tstring_t( _T( "Couldn't determine current user's Desktop folder path:\n" ) ) + my_winapi_tools::get_last_error_msg( ) << std::endl; return EXIT_FAILURE; } my_std_ext::cout << _T( "Welche Datei soll vom Desktop entfernt werden?" ) << std::endl; my_std_ext::tstring_t filename; std::getline( my_std_ext::cin, filename ); if( filename.empty( ) ) { my_std_ext::cout << _T( "You haven't entered a filename. Aborting." ) << std::endl; return EXIT_SUCCESS; } if( !file_to_remove[ file_to_remove.size( ) - 1 ] != _T( '\\' ) ) { file_to_remove += _T( '\\' ); } file_to_remove += filename; if( !DeleteFile( file_to_remove.c_str( ) ) ) { my_std_ext::cerr << _T( "Couldn't delete the file \"" ) << file_to_remove << _T( "\":\n" ) << my_winapi_tools::get_last_error_msg( ) << std::endl; return EXIT_FAILURE; } }
greetz, Swordfish