Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » reihe von wörtern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
04.03.2006, 01:09 Uhr
friedel



ich habe folgende frage:

wie kann ich aus einer reihe von wörtern ein bestimmtes wort "herraupicken"? also wenn ich z.B. folgende reihe habe: "hallo ich bins" wie kann ich das Zweite wort(also das "ich" ) in einer variable speichern?

ich hab zwar leider die frage etwas kompliziert ausgetrückt aber vielleicht versteht ja trotzdem jemand, wass ich meine. ich bin über jede antwort froh
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.03.2006, 02:39 Uhr
CppProgrammer



Hallo
also du kannst dir mit Find() die Position des ersten Leerzeichens im String holen und dann eben mit ner Schleife so lange das darauffolgende Zeichen an einen zweiten String anhängen bis wieder ein Leerzeichen kommt
so zB:

C++:
CString str1 = "hallo ich bins", str2 = "";
int Find1 = str1.Find(" ", 0); //ab dem ersten Zeichen (0) mit Suche nach Leerzeichen (" ") beginnen
int Find2 = str1.Find(" ", Find1+1); //ein Zeichen nach dem ersten Leerzeichen weitersuchen
    
for(int i=Find1+1; i != Find2; ++i)
    str2 += str1[i];


dann sollte am Ende eigentlich in str2 dieses ICH stehen

Dieser Post wurde am 04.03.2006 um 02:40 Uhr von CppProgrammer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.03.2006, 15:35 Uhr
friedel



erstmal danke für die antwort. aber es kommt immer der fehler, dass "CString" undefiniert ist! was muss ich für header-dateien includen damit CString funktioniert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.03.2006, 15:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


std::string benutzen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.03.2006, 16:25 Uhr
friedel




Zitat von FloSoft:
std::string benutzen



mhh. leider kann ich damit nicht viel anfangen. ich benutze borland c++ builder und hab die hilfe durchforstet aber nichts gefunden. ich hab auch gegoogelt, aber bin auch nicht schlauer geworden. tut mir leid, dass ich mich so noobig anstelle aber kann mir trotzdem bitte jemand auf die sprüge helfen. tHX
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.03.2006, 16:38 Uhr
Pler
Einer von Vielen
(Operator)


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vclrf_string_string.asp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.03.2006, 21:50 Uhr
friedel



ich habs so gemacht:


C++:
#include <string>
#include <iostream>

int main( )
{
   using namespace std;


const basic_string <char> s1 ( "hallo ich bins" );
string s2 ( "" );

int Find1 = s1.Find(" ", 0);beginnen
int Find2 = s1.Find(" ", Find1+1);
    
for(int i=Find1+1; i != Find2; ++i)
    s2 += s1[i];

}




da kommt aber der Fehler, dass Find kein Element von string ist!

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.03.2006, 03:44 Uhr
CppProgrammer



Also wenn du #include <string> willst dann sollte das hier eigentlich Fehlerfrei zu kompilieren gehen und auch ohne Problem laufen:

C++:
#include <string>
using namespace std;

int main()
{
    string str1 = "hallo ich bins";
    string str2 = "";
    
    int Find1 = str1.find(" ", 0);
    int Find2 = str1.find(" ", Find1+1);
        
    for(int i=Find1+1; i != Find2; ++i)
        str2 += str1[i];      
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.03.2006, 09:55 Uhr
virtual
Sexiest Bit alive
(Operator)


Und was passiert, wenn jemand versehentlich zwei Leerzeichen benutzt, oder nen tab?
Ich würde es der Streamlogik überlassen:

C++:
std::string get_nth_word(const std::string& sentence, int n) {
     std::stringstream s(sentence);
     std::string word;
     do {
         s>>word;
     } while (--n);
     if (!s) word = "";
     return word;
}

....
// Aus beispiel oben:
str2 = get_nth_word("hallo ich bins", 2);


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.03.2006, 17:27 Uhr
friedel



vielen dank, CppProgrammer, so hab ichs jetzt gemacht, und es hat super gefuntzt. vielen dank an alle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: