Parallele Funktion
-
Hallo ihr!
Ich habe folgendes Problem:
Ich habe zwei Funktionen. Diese funktionieren aber nur, wenn sie einzeln ausgeführt werden. Zusammen laufen sie nämlich nicht. Es kommt dann immer das Fenster "... hat ein Problem festgestellt und muss beendet werden.". Könnt ihr mir vielleicht auf die Sprünge helfen?Mit freundlichsten Grüßen

Hippi#include <iostream> #include <vector> using namespace std; int main() { string *split(string sInput,string sDeliminator),*sArray, strReverse(string text); sArray=split("das ist ein test"," "); for(int i=0;i<=sizeof(sArray)+1;i++) { cout << strReverse(sArray[i]) << endl; } return 0; } string strReverse(string text) { char *cp; string output=""; strcpy(cp,text.c_str()); for(int i=text.length()-1;i>=0;i--) { output+=cp[i]; } return output; } string* split(string sInput,string sDeliminator) { string* sResult; vector<string> vinput; int ipos=-1; for(int i=0;i<sInput.length();i++) { if(sInput.substr(i,1)==sDeliminator) { vinput.push_back(sInput.substr(ipos+1,i-ipos)); ipos=i; } } vinput.push_back(sInput.substr(ipos+1,sInput.length()-ipos)); sResult = new string[vinput.size()]; for(int i=0;i<vinput.size();i++) { sResult[i]=vinput.at(i); } vinput.clear(); return sResult; }
-
Hippi schrieb:
string strReverse(string text) { char *cp; string output=""; strcpy(cp,text.c_str()); ... ...cp zeigt irgendwohin deshalb stürzt es ab.
btw: #includiere <algorithm>. da ist eine reverse funktion drin
geht, glaube ich, ungefähr so:std::string x = "hallo" reverse (x.begin(), x.end());
-
string *split(string sInput,string sDeliminator),*sArray, strReverse(string text);zwar nicht falsch, aber eher was für einen obfuscation contest. es ist doch eher unüblich funktionen lokal zu deklarieren und dann insbesondere nicht zusammen mit variablendefinitionen. im übrigen ist sArray ein zeiger, das folgende sizeof(sArray) völlig unsinnig (tatsächlich gibt es keine möglichkeit, die größe des arrays zu bestimmen). für meinen geschmack sind das viel zu viele zeigerspielereien und das ganze zu sehr in C verhaftet...