Insert Befehl in String funktioniert nicht!
-
Hallo!
#include <sstream> #include <fstream> #include <iostream> #include <vector> #include <string> using namespace std; int main(int argc, char **argv) { string str; fstream f; string dateiname; vector<string> vec; // Vektorendeklaration string output; int a=0; int ii=0; char* StopPosition = 0; getline(cin, dateiname); ifstream ifs(dateiname.c_str()); while (!ifs.eof()) { getline(ifs, str); vec.push_back(str); a++; } for(ii=0;ii<15;++ii) { vec[ii].insert(13,";"); // Wieso funktioniert das hier nicht?? cout << "Teststring: "<< vec[ii].substr(0,14) <<endl; } cin >> a; };Bin total verwundert, dass in diesem Code der insert Befehl in den Vector´nicht funktioniert. An was kann das liegen?
Danke.
Johannes
-
Gibt es hier die 15 oder mehr erforderlichen strings?
Hat jeder string die 14 oder mehr erforderlichen Zeichen?
Was soll das mit dem a? Bei vector gibt es size().
-
Hab den Code gekürzt.
Bin darauf gekommen, dass mein Einlesefile bei einer Leerzeile abstürtzt.
Wie kann ich das lösen, dass nur Zeilen eingelesen werden in welchen tatsächlich Zeichen stehen. Wie sieht die Einlesebedingung aus?
Danke.
Johannes
-
getline() sollte eigentlich keine Probleme mit Leerzeilen haben. Wenn du intern nicht damit zurechtkommst, kannst du Leerzeilen auch "unter den Tisch kehren":
while(ifs) { getline(ifs,str); if(str!="")vec.push_back(str); }(übrigens brauchst du die Zeilenzahl nicht manuell mitzuzählen - den richtigen Wert kannst du jederzeit mit "vec.size()" abfragen)
-
evtl. so
if( !str.empty()) vec.push_back(str);oder bei dir besser
if( str.size() > 13) vec.push_back(str);