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 Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
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; }