001
04.11.2005, 23:04 Uhr
Spacelord
Hoffnungsloser Fall
|
Hi, der iterator mit dem replace deinen vector durchläuft liefert ja bei seiner Dereferenzierung ein Objekt vom Typ string.Insofern kann replace kein Leerzeichen finden.du müsstest replace auf dem string ausführen der hinter dem Iterator steht. Eine (schnelle) Umsetzung könnte etwa so aussehen.
C++: |
#include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std;
struct string_replacer:public unary_function<string&,string&> { string_replacer(char oldChar_,char newChar_):oldChar(oldChar_),newChar(newChar_){} string& operator()(string& str) { std::replace(str.begin(),str.end(),oldChar,newChar); return str; } private: char oldChar; char newChar; };
string_replacer replace_character(char oldChar,char newChar) { string_replacer temp(oldChar,newChar); return temp; }
int main() { ifstream ifs("C:\\test1.txt"); if (!ifs) return 1; vector<string> vec; string str; while (!ifs.eof()) { getline(ifs, str); vec.push_back(str); for_each(vec.begin(), vec.end(),string_replacer(' ',';')); }
return 0; }
|
Geht bestimmt noch besser,aber als Ansatz sollte der Code schon ganz ok sein.
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes. Dieser Post wurde am 04.11.2005 um 23:06 Uhr von Spacelord editiert. |