ďťż

Ładny brzuch

jakiej zmmiennej użyć aby mogła ona przechowywać całe wyrazy a nie tylko pojedynicze liczby lub litery

ed=przemek



cytat:Edas napisał:

jakiej zmmiennej użyć aby mogła ona przechowywać całe wyrazy a nie tylko pojedynicze liczby lub litery

ed=przemek

string ale nie napisałeś w jakim języku;)

Asdef

chodzi mi o język c++

ed=przemek

String (chyba jest w C++ ?) albo char*

Nauka radziecka zna takie przypadki...



W C++ trzeba użyć string, ale wcześniej #include <string.h> np
string s1,ss;
string s3="Hey";
string s5="to ja";
s1=s3+s5;
itd

Ed

dzięki to jest to czego szukałem catz(chodzi o char*)

ed=przemek

no to str to samo co string w delphi

Asdef

A nie lepiej skorzystać z tablicy ?

W C++ istnieje typ (klasa) string, zawarta w przestrzeni nazw (ang. namespace) std. Należy więc dołączyć plik <string> (BEZ ROZSZERZENIA). Posługiwanie się klasą string jest dość proste. Przykład:

std::string tekst = "Hello World!"; //nowa zmienna tekstowa
//wersja z użyciem konstruktora - std::string tekst("Hello World!");
std::cout << tekst << std::endl; //wypisanie tekstu na ekran
tekst += " C++ Rulez!"; //dopisanie nowego tekstu do już istniejącego
std::cout << tekst << std::endl; //wypis na ekran
strcmp( "Hello", tekst.c_str() ); //uzycie std::string w funkcji z C, wymagajacej parametru
//const char*
std::cin >> tekst; //wczytanie tekstu

Dygresja
char* to nie jest żadna zmienna tekstowa, tylko wskaźnik na znak. To, że używa się go do przetwarzania tekstu, to tylko wynik "umowy", między programistą, a funkcjami C. Funkcje C skanują pamięć od wskazywanego znaku do spotkania znaku NULL (ASCII 0), i to programista musi pilnować, żeby wskaźnik spełniał ten wymóg, i żeby cały blok pamięci należał do programu (new...). To właśnie brak zrozumienia tego, że char* to nie tekst jest przyczyną większości błędów początkujących programistów, więc przestrzegam. No i tablica (char []) to dokładnie to samo, co char *.

PS.
Temat pozbywania się std:: z przed klas string, zmiennych cout, i innych był omawiany wiele razy, więc nie będę powtarzał. Acha, i std::cout wymaga includowania <iostream>, a nie <iostream.h>.

Pozdrawiam,
TeMPOraL

//================================================
KĄESACP: Komputer Ąwiat - Expert Society Against Crap Posting
To join: Put these lines in your signature and don't post crap!
"E = mc... dolen taken my notepad!" - Terran Science Vessel (StarCraft)
GG: 1488052 | temporal@poczta.fm | [url]http://www.temporal-software.prv.pl

cytat:TeMPOraL napisał:

W C++ istnieje typ (klasa) string, zawarta w przestrzeni nazw (ang. namespace) std. Należy więc dołączyć plik <string> (BEZ ROZSZERZENIA). Posługiwanie się klasą string jest dość proste. Przykład:
[...]

No tak, tylko że pod Windowsa nie da się skorzystac z std::cout/cin itp. :(

Abit KT7A-Raid, Athlon 1.53 GHz, 512 MB SDR, R9200 Pro (@308/486), 2x Barracuda.7 40 GB (RAID-0), Vortex2, Fortron 300W, audio 350W, Win XP Pro SP1 + cisza :)

cytat:rzymo napisał:

No tak, tylko że pod Windowsa nie da się skorzystac z std::cout/cin itp. :(

Dobrze, ale nie znaczy to, że klasa std::string nie jest przydatna. Tam, gdzie na wejściu funkcja życzy sobie typu LPCSTR, czyli po polsku const char*, to string posiada funkcję c_str, która ten typ właśnie zwraca (ie. MessageBox(NULL,tresc.c_str(), tytul.c_str(), MB_ICONINFORMATION). Jeśli trzeba wczytać tekst, to można zrobić sobie bufor typu char *, a potem operatorem = przypisać do zmiennej typu std::string. A jeśli trafisz na bibliotekę, która życzy sobie tekstu w postaci char*, ale wiesz, że go nie zmodyfikuje, to możesz napisać const_cast<char*>(tekst.c_str()).

//================================================
KĄESACP: Komputer Ąwiat - Expert Society Against Crap Posting
To join: Put these lines in your signature and don't post crap!
"E = mc... dolen taken my notepad!" - Terran Science Vessel (StarCraft)
GG: 1488052 | temporal@poczta.fm | [url]http://www.temporal-software.prv.pl

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •