problem mit kleinem datei-parser
-
hallo
meine datei sieht so aus:
name:zahlen:zahlen
......
name:zahlen:zahlenbis jetzt kann ich nur name auslesen wie es dann weiter geht weis ich nicht
hier mal ein bissl code:#include <iostream> #include <fstream> using namespace std; int main() { string name_="gerd"; //nur diese zeile soll ausgelesen werden string name; string zahlen1; string zahlen2; ifstream file; file.open("data.txt"); char ch; while(file.get(ch)) { if(ch==':') break; else name+=ch; } cout<<name<<endl; cout<<zahlen1<<endl; cout<<zahlen2<<endl; file.close(); return 0; }es soll nur die zeile ausgelesen werden wo als name gerd steht z.B
vielen dank
-
Du willst wohl so etwas:
#include <vector> #include <string> #include <fstream> #include <iostream> std::vector<std::string::size_type> split_pos( std::string const & str , char sign ) { std::string::size_type pos = 0; std::vector<std::string::size_type> vec; vec.push_back(pos); while( ( pos = str.find_first_of(sign,pos+1) ) != std::string::npos ) vec.push_back(pos); return vec; } int main() { std::ifstream ifs("input.txt"); std::string line , name , zahlen1 , zahlen2; std::getline(ifs,line); std::vector<std::string::size_type> vec = split_pos( line , ':' ); if(vec.size() != 3) return 0; name = line.substr( vec[0] , vec[1]++ ); zahlen1 = line.substr( vec[1] , vec[2]++ - vec[1] ); zahlen2 = line.substr( vec[2] ); std::cout << name << std::endl << zahlen1 << std::endl << zahlen2 << std::endl; }