cztery pytanka
Ostatnio zmodyfikowano 2013-05-28 22:41
NHFL Temat założony przez niniejszego użytkownika |
cztery pytanka » 2013-05-28 15:05:06 1) czy można powiedzieć że tablica znaków to jest zawsze c-string? 2) jakie są różnice w zmianie wartości wysłanej do funkcji przez referencje a jako wskaźnika w końcu efekt jest ten sam 3) czy jest jakaś funkcja albo metoda sprawdzająca ile elementów(liczb) jest w tablicy? cos w stylu length() tylko ze to jest do tablicy znakow(string) a nie liczb 4) w jaki sposób można odebrać w funkcji jako wskaźnik string który wczytujemy z klawiatury z funkcji main(zdaje sie ze sie nie da mozna odebrac string tylko jako char oraz tylko wtedy gdy definicja stringa wyglada tak: char tekst[rozmiar] = "Total War to zaprawde wybitna seria strategiczna.";
|
|
kubawal |
» 2013-05-28 15:13:29 1) O ile ma '\0' na końcu 2) Zależy od potrzeby. 3) Nie. Trzeba sobie ten rozmiar zapisać, lub użyć std::array, lub co do cStringów, strlen() 4) Używać std::string int main() { char cstr[ 50 ]; JakasFunkcja( std::string( cstr ) );
/edit: @pekfos ej no, nie przedrzeźniaj :) Napisałeś te edity w tym samym czasie co ja :D. I prawie w nich to samo 0_o |
|
pekfos |
» 2013-05-28 15:13:34 | 1) czy można powiedzieć że tablica znaków to jest zawsze c-string? |
O ile jest zakończona zerem, to tak, jednak to nie tablica jest c-stringiem, lecz jej zawartość. | 2) jakie są różnice w zmianie wartości wysłanej do funkcji przez referencje a jako wskaźnika w końcu efekt jest ten sam |
Referencji używa się tak samo jak zwykłej zmiennej, przez co jest to wygodniejsze od zwykłych wskaźników, jednak do jako referencji nie można podać NULLa. | 3) czy jest jakaś funkcja albo metoda sprawdzająca ile elementów(liczb) jest w tablicy? cos w stylu length() tylko ze to jest do tablicy znakow(string) a nie liczb |
Zależy od tablicy. Jeśli jest zaalokowana dynamicznie, to nie da się (przenośnie) określić jej rozmiarów. W przypadku tablic na stosie, sizeof zwraca ich rozmiar, a z tego łatwo wyliczyć, ile jest elementów. Btw: std::string to nie jest tablica. Jeżeli w tablicy jest np c-string, to rozmiar tego c-stringa (c-stringa, a nie tablicy) można określić odpowiednią funkcją (tu strlen(), wcslen()) | 4) w jaki sposób można odebrać w funkcji [..] |
Zależy co pobierasz w funkcji i co do niej podajesz. Jeśli typ się zgadza, to możesz przekazać prawie wszystko. | @pekfos ej no, nie przedrzeźniaj :) Napisałeś te edity w tym samym czasie co ja :D. I prawie w nich to samo 0_o |
Znowu kogoś przedrzeźniam? :/ Btw, ładne "prawie" :P |
|
NHFL Temat założony przez niniejszego użytkownika |
» 2013-05-28 18:37:36 4) to jak odebrać jako wskaźnik w funkcji klasę string gdy w funkcji main mam cos takiego: string tekst; cout << "Podaj tekst: "; cin >> tekst;
jak ma wyglądać wywołanie takiej funkcji? ps: dzięki za odpowiedzi do 3 poprzednich pytań |
|
pekfos |
» 2013-05-28 18:42:01 Jaki wskaźnik? std::string* czy const char*? f1( & tekst ); f2( tekst.c_str() );
|
|
NHFL Temat założony przez niniejszego użytkownika |
» 2013-05-28 22:41:16 dzięki dobrze wiedzieć i to i to a więc closed ;) |
|
| « 1 » |