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

Dynamiczna tablica typu string

Cloud VPS
–1 głos
678 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 5,308 wizyt
pytanie zadane 14 września 2015 w C i C++ przez Wojtek Wiedeński Bywalec (2,460 p.)
+1 głos
1 odpowiedź 979 wizyt
pytanie zadane 20 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,630 p.)
0 głosów
1 odpowiedź 418 wizyt
pytanie zadane 14 lutego 2021 w C i C++ przez poczatekcpp Nowicjusz (150 p.)

93,459 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...