Letzter Punkt im String
-
Ich schreibe gerade ein Programm dass Videodateien speichert. Dass problem ist die endung der Datei. Wie kann ich die endung an meiner neuen Datei anhängen ?.
Ich habs so gemachtneu = alt[alt.size()-4] + alt[alt.size()-3] + alt[alt.size()-2] + alt[alt.size()-1];
Dass ist natürlich nicht gut ^^
Habt ihr eine gute lösung ?
-
?
string oldfilename = "datei", extension = ".avi"; // --> string newfilename = oldfilename + extension;
-
-
Ich sehe da hat sich jemand mit dem Input gespielt

Wenn mans darauf anlegt, dann halt entweder ein try-catch um die Zeile, oder eben auf std::string::npos vergleichen.
-
Wie wäre es mit regulären Ausdrücken?
-
Wurst schrieb:
Wie wäre es mit regulären Ausdrücken?
Dumme Idee, regex ist viel langsamer, das kann man mit nem simplen rfind lösen

-
Die Geschwindigkeit ist dabei nun wirklich egal.
Die Frage ist was übersichtlicher ist.
Für jmd. der viel mit Regexen arbeitet wahrscheinlich die Regexen, für alle anderen Vermutlich ohne Regexen.
-
Regex ist genau dafür nicht gedacht. Und natürlich ist es ein Unterschied, wenn er viele Files parst. Aber du hast vermutlich Recht, wenn du sagst, dass der Unterschied so gering ist, dass niemand etwas merkt.
-
Wenn das Parsen so simpel klappt, wieso dann plötzlich ne Regex-Maschine reinhauen? Es läuft und es ist nichts dagegen einzuwenden, also warum ändern?
-
#include <string> #include <iostream> std::string extract_file_extension( std::string const& file_name, bool keep_dot = false ) { std::string::size_type pos = file_name.find_last_of( '.' ); if ( pos == std::string::npos ) return std::string(); std::string ext( file_name, ( keep_dot ) ? pos : pos + 1 ); return ext; } int main( int argc, char** argv ) { std::string s = "/path/with/file.ext"; std::cout << s << std::endl; std::cout << extract_file_extension( s ) << std::endl; std::cout << extract_file_extension( s, true ) << std::endl; std::cin.get(); return 0; }Gut Schuß
VuuRWerK