hur gör man för att enklast söka i text strängar? Du får nog beskriva lite tydligare vad du vill göra. Vill du bara jämföra dem? gammal stl Finns en bunt olika algoritmer med lite olika egenskaper, men KNP är väl rätt fin: Är det för att lära dig, för att du läser en kurs där du är tillsagd att göra så, eller av någon annan anledning? yes yes... Vad menar du med "spara ner ord i en vektor"?söka i text strängar
lär jag söka igenom bokstav för bokstav
när string1[i] stämmer med string2[i] kolla om nästa bokstav efter också stämmer, om inte fortsätt med nästa bokstav i string1Sv: söka i text strängar
Använder du std::string skriver du då bara
s1 == s2, s1<s2 etc.
Använder du inte std::string, varför? I 99% av fallen bör du isf byta till det.
Ska du loopa igenom för att hitta något är det i första hand "gamla stl", ev. med boost, som du ska titta på. I sista hand en handskriven loop.Sv:söka i text strängar
jag ska inte jämföra dem, jag vill kolla om tex ett ord finns i en mening och inte använda några utomstående bibliotek. Det vill säga en handskriven loop :)Sv: söka i text strängar
www-igm.univ-mlv.fr/~lecroq/string/node8.htmlSv: söka i text strängar
I allmänhet är det ändå "stl" du bör använda. Se http://www.cplusplus.com/reference/string/string/find.html, för ditt specifika exempel.
Alternativ 2, lite krångligare, är att använda std::transform och liknande. Då får du antingen lägga in extra klasser som gör jobbet, eller lägga in boost, och köra med lambdafunktioner. (Är mycket enklare än vad det låter).
Alternativ 3, ytterligare lite sämre, är att köra med iteratorer.
Typ:
<code>
std::string s1;
...
for(std::string::iterator i = s1.begin(); i != s1.end(); ++i)
std::cout << *i;
</code>
Alternativ 4, allra sämst, är att köra med index eller at:
<code>
std::string s1;
for(size_t i = 0; i < s1.length(); ++i){
std::cout << s1[i];
std::cout << s1.at(i);
}
</code>
använd i allmänhet at, eftersom den kollar så att du inte går utanför strängen.Sv:söka i text strängar
hur gör jag om jag vill spara ner ord i en vektor då? får det inte att funka med char eftersom den bara tar ett tecken och jag kan ju inte direkt göra en vektor av en string?Sv: söka i text strängar
Du har flera ord, och varje ord ska få en plats i en vektor?
Då gör du precis det, en vektor av en string;
std::vector<std::string> v;
v.push_back("ABC")
v.push_back("DEF")
v.push_back("GHI")