• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dynamiczna tablica typu string

VPS Starter Arubacloud
–1 głos
487 wizyt
pytanie zadane 21 września 2018 w C i C++ przez Kacperos_89 Początkujący (400 p.)
otagowane ponownie 22 września 2018 przez Kacperos_89

Witam :)

Mam problem ze stworzeniem dynamicznej tablicy jedno wymiarowej typu string.

Potrzebuje utworzyć tablice, której rozmiar będzie ustalał użytkownik programu w trakcie działania tego programu. Mój obecny kod wygląda tak:

#include <iostream>

using namespace std;

int i;
string * s = new string [i];

int main()
{
    for (;;)
    {
        cout << "i = " << i << endl;
        cout << "Wcisnij klawisz " << endl << endl;
        cin >> s[i];
        cout << endl;
        cout << s[i] << endl;

        i++;
    }
    return 0;
}

Program kompiluje się prawidłowo, ale działa tylko do momentu, w którym musi wydrukować literę, którą wcześniej wczytał. Dokładnie ten sam kod działa prawidłowo w przypadku gdy zamiast ciągu znaków string użyję zmiennej int.

1 odpowiedź

0 głosów
odpowiedź 21 września 2018 przez k222 Nałogowiec (30,150 p.)
Przed utworzeniem tablicy musisz podać jej rozmiar, ty tego nie robisz (bo ile jest równe i w linii 6 ???) po drugie nie wiem jaki był zamiar tej pętli for, ale nie możesz działać na tablicy za pomocą nieskończonej pętli
komentarz 22 września 2018 przez Kacperos_89 Początkujący (400 p.)
Mniejsza z pętlą, fakt ta jest nieskończona, ale to jest na szybko wycinek który mi nie działa.

W teorii i = 0 więc powinien zapisać wartość do miejsca zerowego. Jak podam wartość przed utworzeniem tablicy to chyba nie będzie ona już dynamiczna tylko statyczna. Na chłopskie oko :P jak podam wielkość tablicy np 10 a będę chciał zapisać 11'stą wartość to tez wywali mi błąd.
komentarz 22 września 2018 przez draghan VIP (106,230 p.)

 

int i;
string * s = new string [i];

Tutaj 'i' otrzymuje wartość domyślną równą zero. Następnie tworzysz wskaźnik na 's' i każesz zaalokować tablicę o liczbie elementów równej 'i' (które - przypomnę - ma wartość równą zero).

Jak podam wartość przed utworzeniem tablicy to chyba nie będzie ona już dynamiczna tylko statyczna. Na chłopskie oko :P jak podam wielkość tablicy np 10 a będę chciał zapisać 11'stą wartość to tez wywali mi błąd.

Tablica dynamicznie alokowana nie oznacza, że będzie się ona automatycznie rozszerzała, kiedy braknie jej miejsca. Oznacza to tyle, że jej rozmiar nie musi być znany w momencie kompilacji. Jeśli chcesz mieć pojemnik, który będzie się automatycznie powiększał, kiedy będziesz do niego dorzucał elementy, zastosuj np. std::vector.

Podobne pytania

+1 głos
4 odpowiedzi 4,830 wizyt
pytanie zadane 14 września 2015 w C i C++ przez Wojtek Wiedeński Bywalec (2,460 p.)
+1 głos
1 odpowiedź 710 wizyt
pytanie zadane 20 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,630 p.)
0 głosów
1 odpowiedź 294 wizyt
pytanie zadane 14 lutego 2021 w C i C++ przez poczatekcpp Nowicjusz (150 p.)

92,843 zapytań

141,782 odpowiedzi

320,858 komentarzy

62,174 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...