[C++] Stringi


(Lerhond) #1

Mam problem. Oto kod mojego programu:

#include

#include


using namespace std;


string s, w;

long i, j, k;


int main()

{

cin >> s;

j = s.length();

k=0;

for(i=0; i
{

if(s[i]!=s[i+1])

{

w[k]=s[i]; // ta linia chyba jest zła

k++;

}

}

k=w.length();

cout << w[i]; // tego też nie jestem pewien

system("pause");

}

Program ma za zadanie, aby z wpisanego np. pppiiiieeeesss wypisać pies. Jednak nie wypisuje nic.


(Sawyer47) #2
  1. Zmienne globalne to zło.

  2. String w jest pusty, więc nie możesz do niego nic wstawić, dopóki nie zarezerwujesz pamięci.

  3. Jeśli chcesz wyświetlić string w, to po prostu std::cout << w;


(Lerhond) #3

A jak ją zarezerwować?


(Fiołek) #4

Funkcją reserve/resize, lecz w tym wypadku ona i tak jest niepotrzebna(oprócz tego, że będzie tylko jedna alokacja). Abo dodać coś na koniec std::string użyj operatora += albo funkcji append.


([alex]) #5
#include using namespace std;