Jak wyciągnąć pierwszy wyraz ze stringa?

0

Witam,
mam stringa i chcę z niego uzyskać pierwszy wyraz. Nie wiem jakiej funkcji mogę użyć, ale szperając po necie natrafiłem na funkcję stringa jaką jest erase i sobie założyłem, że każdy pierwszy wyraz będzie 25 znakowy.

String tekst =Socket->ReceiveText();
String PierwszyWyraz=tekst;

PierwszyWyraz.erase (25,tekst.length());

Z góry dzięki za pomoc

dodanie znacznika <code class="cpp"> i tagu C++ - fp

1

Wyszukaj pierwszą spację i odpowiednio wytnij pierwszy wyraz:

#include <iostream>
#include <string>
 
int main() {
  std::string txt("ala ma kota");
  
  std::string first_word(txt, 0, txt.find_first_of(' '));
  
  std::cout << first_word;
  
  return 0;
}

http://ideone.com/r1jYNs

Dokumentacja pomoże Ci odkryć inne funkcje: http://en.cppreference.com/w/cpp/string/basic_string
Zapewne można to zrobić na sto innych sposobów.

1

Lub tak:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
  {
   string text("ala ma kota");
   stringstream sin(text);
   string word;
   while(sin>>word)
     {
      cout<<word<<endl;
     }
   return 0;
  }

http://ideone.com/OMj9pu

1

@_13th_Dragon
Zdaje mi się, że on tylko usuwa do ostatniej zmiennej spacje a nie daje mi pierwszy wyraz, czyli wg. twojego wzoru to co chcę powinno mi dać "ala" a daje mi "alamakota" :(

0

Ale @Endi napisał pięknie i dla niego +1 do rep i browar do odebrania w Bydgoszczy :-)

0

Z serii "100 sposob na rozdzielenie stringa w C++" http://stackoverflow.com/questions/236129/splitting-a-string-in-c

0

@_13th_Dragon

Szukałem w twojej dokumentacji i nie zlanazłem. Musisz sobie dodać. btw nie wiem jak udało Ci się tutaj zarejestrować bez TBrain, ale mimo wszystko dzięki za jasne wytłumaczenie zamieszczonego kodu. Jesteś wielki!!

0
wyraz = zdanie.substr(0, zdanie.find_first_of(' '));

1 użytkowników online, w tym zalogowanych: 0, gości: 1