Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

cztery pytanka

Ostatnio zmodyfikowano 2013-05-28 22:41
Autor Wiadomość
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.";


P-84179
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
C/C++
int main()
{
    char cstr[ 50 ];
    // pobieranie cstr
    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
P-84180
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
P-84181
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:
C/C++
string tekst;
cout << "Podaj tekst: ";
cin >> tekst;
jak ma wyglądać wywołanie takiej funkcji?

ps: dzięki za odpowiedzi do 3 poprzednich pytań
P-84206
pekfos
» 2013-05-28 18:42:01
Jaki wskaźnik? std::string* czy const char*?
C/C++
f1( & tekst ); // string*
f2( tekst.c_str() ); // const char*
P-84207
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 ;)
P-84246
« 1 »
  Strona 1 z 1