Dateiendung in string kopieren
-
Hallo, bin noch Anfängerin und stehe vor folgender Aufgabe:
Es wird ein string (Dateiname als Inhalt) an die Funktion endung() übergeben, welche dann einen string mit der Dateiendung zurückgeben soll.
Das Programm liefert als Ausgabe nur '...'.
Kann mir jemand weiterhelfen?using namespace std; #include<iostream> #include<string> #include<cstdlib> string endung(string); int main() { string result; string str; int anzahl; cout<<"Dateinamen mit Datei-Endung eingeben eingeben:"<<endl; cin>>str; result=endung(str); cout<<result; } string endung(string name) { string help; bool punktvorkommen=false; for(int i=0;i<name.length();i++) { if(name[i]=='.') { punktvorkommen=true; for(int j=i+1;j<name.length();j++) { help=help+name[i]; } } } if(punktvorkommen) return help; else return 0; }
-
hat sich erledigt...
hier
help=help+name[i];muss natürlich
help=help+name[j];stehen.
-
Wenn du std::string nutzt, dann nutze ihn auch!
#include <iostream> #include <string> using namespace std; string endung(const string& filename) { size_t dot_pos = filename.find_last_of('.'); return filename.substr(dot_pos + 1, string::npos); } int main() { cout << "Dateinamen mit Datei-Endung eingeben eingeben:\n"; string dateiname; cin >> dateiname; cout << endung(dateiname) << '\n'; }Muss man ja schließlich nicht alles zum 347487574993ten Mal (schlecht) neu erfinden.
-
Ich versteh deine Lösung nicht wirklich

Außerdem wird mit
cin>>str;nur bis zu einem Leerzeichen eingelesen.
Das kann Probleme verursachen.
Besser gehts mitstd::getline(std::cin, str)http://www.cplusplus.com/reference/string/getline/
Versuchs mal so:std::string endung(const std::string& s) { return s.substr(s.find_last_of('.')+1, s.length()); }http://www.cplusplus.com/reference/string/string/substr/
http://www.cplusplus.com/reference/string/string/find_last_of/Edit: Boaa aber sowas von zu spät..