06. november 2008 - 20:02
Der er
5 kommentarer og 2 løsninger
split string i c++
Hej Jeg står og mangler en funktion, der kan dele en std streng op omkring et givent tegn. I mit tilfælde omkring spaces. Eks string test = "hej med dig" kunne give et array hvor første element er hej, andet er med og tredje dig. Jeg synes ikke rigtigt jeg har kunnet finde noget på google, men synes ikke det kan passe at det ikke findes?
Annonceindlæg fra GlobalConnect
06. november 2008 - 20:04
#1
Fra lageret: vector<string> split(char sep,string s) { vector<string> res; string tmp = ""; for(int i=0;i<s.size();i++) { if(s[i]==sep) { if(tmp.size()>0) { res.push_back(tmp); tmp = ""; } } else { tmp = tmp + s[i]; } } if(tmp.size()>0) { res.push_back(tmp); } return res; }
06. november 2008 - 20:27
#2
#include <string> #include <sstream> #include <vector> #include <iostream> std::vector<std::string> words; std::stringstream in("Hej med dig"); std::string w; while(std::getline(in, w, ' ')) words.push_back(w);
06. november 2008 - 20:45
#3
arne_v tak skal du have, det virker perfekt. Du skulle vel ikke også ligge inde med noget på lageret, der kan lave en string om til en float, hvor det er muligt at se om der er sket en fejl grundet forkert input, altså hvor der indgår et forkert tegn. Pt har jeg std::string a = "137.5"; std::istringstream b(a); float f; b >> f; om ikke andet gider du så ikke svare?
06. november 2008 - 21:12
#4
Eksempel: #include <iostream> #include <sstream> #include <string> using namespace std; void str2fp(string s) { stringstream ss(s); double x; ss >> x; if(ss.fail()) cout << s << " is not a double" << endl; else cout << s << " = " << x << endl; } int main() { str2fp("123.45"); str2fp("abc"); return 0; }
06. november 2008 - 21:12
#5
Faktisk synes jeg at dennis's forslag med at bruge getline på en stringstream til at læse ord ud med er bedre end min mere manuelle metode !
06. november 2008 - 21:13
#6
og svar
06. november 2008 - 21:16
#7
Okay, tak for hjælpen.
Kurser inden for grundlæggende programmering