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

question-closed Zmienna się nie wyświetla c++

0 głosów
845 wizyt
pytanie zadane 26 kwietnia 2016 w C i C++ przez TenTakiTam Bywalec (2,460 p.)
zamknięte 28 kwietnia 2016 przez draghan
​void zakoduj(string haslo)
{
    string zakodowane_haslo;
    
    for (int i = 0; i < haslo.length(); i++)
    {
        if(haslo[i] != ' ')
        {
            zakodowane_haslo[i] = '_';
        }
        else
        {
            zakodowane_haslo[i] = ' ';
        }
    }
    cout << zakodowane_haslo;
}

Witam!
Mam problem z voidem zakoduj(). Chodzi o linie 16. wszystko się kompiluje, ale nie wyświetla się zmienna zakodowane_haslo.

komentarz zamknięcia: Problem rozwiązany.
komentarz 26 kwietnia 2016 przez TheFeniks Gaduła (4,690 p.)
Treści pytania nie wrzucaj do ramki przeznaczonej na kod. :)
komentarz 26 kwietnia 2016 przez draghan VIP (106,230 p.)
Czasami edytor żyje własnym życiem, każdemu może się zdarzyć. :) Poprawiłem troszkę. ;)
komentarz 26 kwietnia 2016 przez TheFeniks Gaduła (4,690 p.)
No kurde teraz to jest picuś glancuś. :D
komentarz 27 kwietnia 2016 przez TenTakiTam Bywalec (2,460 p.)
dziękuje

2 odpowiedzi

+1 głos
odpowiedź 26 kwietnia 2016 przez Radfler VIP (101,030 p.)
wybrane 28 kwietnia 2016 przez draghan
 
Najlepsza

Zmienna zakodowane_haslo nie ma żadniej długości. Radzę użyć funkcji push_back:

if(haslo[i] != ' ') {
  zakodowane_haslo.push_back('_');
} else {
  zakodowane_haslo.push_back(' ');
}

 

1
komentarz 26 kwietnia 2016 przez draghan VIP (106,230 p.)

Albo ewentualnie użyć konkatenacji:

zakodowane_haslo += '_';

 

komentarz 26 kwietnia 2016 przez Radfler VIP (101,030 p.)

Ewentualnie x2 funkcji append:

zakodowane_haslo.append(1, '_');
komentarz 26 kwietnia 2016 przez Sebastian Fojcik Nałogowiec (43,040 p.)

Przy korzystaniu ze zmiennych string wygodniej jest moim zdaniem używać operatora +=. Specjalnie dla napisów został on tak przeładowany.

Ja mam też taką swoją osobistą zasadę, że jeśli operuję na tablicy, liście czy innej strukturze, to rozmiar sprawdzam tablica.size(). Natomiast dla napisów zawsze wywołuję: napis.length(). W tej kwestii jest oczywiście dowolność. Nikogo nie przekonuję, że to słuszne. Taka tylko ciekawostka ;-)

komentarz 26 kwietnia 2016 przez draghan VIP (106,230 p.)
Zdaje mi się, że dawniej std::string::size() i std::string::length() mogły zwracać różne wyniki - metoda size() zwracała faktyczny rozmiar bufora w bajtach, length() natomiast zwracała ilość elementów (znaków) w buforze. Nie jestem tego w 100% pewny, zdaje się że kiedyś o tym czytałem.
Taka niepewna ciekawostka, fajnie by było gdyby ktoś ja potwierdził / zanegował.

W tej chwili na 101% są to synonimy. :)
1
komentarz 27 kwietnia 2016 przez MetGang Nałogowiec (34,360 p.)

GCC 4.9.2

size_type size() const _GLIBCXX_NOEXCEPT
{ return _M_rep()->_M_length; }

size_type length() const _GLIBCXX_NOEXCEPT
{ return _M_rep()->_M_length; }

W starszej implementacji z tego co kojarzę length() zwracała po prostu size(). Ogólnie jest to kwestia wyboru i przyzwyczajenia, lecz ja preferuję size(). W przypadku tworzenia szablonu funkcji z przesyłaniem kontenerów, size() zapewnia działanie dla wszystkich (string, vector, list).

1
komentarz 27 kwietnia 2016 przez Radfler VIP (101,030 p.)

MSVC

size_type length() const _NOEXCEPT
	{	// return length of sequence
	return (this->_Mysize());
	}

size_type size() const _NOEXCEPT
	{	// return length of sequence
	return (this->_Mysize());
	}

To ja dopowiem, że nie preferuję ani size ani length. Wolę globalne std::size (C++17, jednak wszystkie popularniejsze kompilatory już to mają), głównie ze względu na łatwość użycia w szablonach i możliwość pracy ze zwykłymi tablicami.

0 głosów
odpowiedź 26 kwietnia 2016 przez Konrad Nabożny Stary wyjadacz (13,480 p.)
Zawartość poszczególnych komórek tablicy zakodowane hasło dodawaj do innej zmiennej string używając konkatenacji w każdej iteracji pętli. Na końcu wyświetl tą zmienną string.

Podobne pytania

0 głosów
1 odpowiedź 686 wizyt
0 głosów
1 odpowiedź 309 wizyt
0 głosów
2 odpowiedzi 784 wizyt
pytanie zadane 13 lutego 2016 w PHP przez wius2012 Początkujący (330 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...