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

wypisywanie ciągu znaków

+2 głosów
144 wizyt
pytanie zadane 12 września 2020 w C i C++ przez Dezmonths Początkujący (310 p.)

Witam,

potrzebuję pomocy. Chciałbym się dowiedzieć, jak wypisać jakiś ciąg znaków np. 3 razy. Przykład: 

string x;

x="*^*#";

cout<<3*x;

Taki kod się nie kompiluję. Dziękuje za poświęcony czas.

4 odpowiedzi

+3 głosów
odpowiedź 12 września 2020 przez tangarr VIP (136,600 p.)

Twój kod się nie kompiluje, ponieważ C++ nie posiada operatora mnożenia liczby i napisu.
Jednak nic nie stoi na przeszkodzie by utworzyć taki operator.

#include <iostream>
#include <string>

std::string operator*(unsigned int count, const std::string &text) {
    std::string result;
    result.reserve(text.size()*count); // ta linijka jest niepotrzebna
                                       // to tylko drobna optymalizacja
                                       // pozwalająca uniknąć przenoszenia
                                       // napisu w pamięci podczas rozszerzania
    for (unsigned int i=0; i<count; i++) {
        result += text;
    }
    return result;
}

int main()
{
  std::string text = "asdf";
  std::cout << 5*text << std::endl;
}

 

komentarz 12 września 2020 przez Dezmonths Początkujący (310 p.)
Dziękuję
+2 głosów
odpowiedź 12 września 2020 przez Whiskey_Taster Stary wyjadacz (11,540 p.)

Mam nadzieję, że to nie jest bait. Musisz użyć pętli, dobrym wyborem będzie pętla for.

for (int i = 0; i < 3; i++)
      cout << x;

Wstaw to zamiast swojego cout << 3*x; Zrobiłbym to i Ci pokazał, ale na telefonie słabo z tym.

A dlaczego nie można zrobić tak, jak pokazałeś? Zmienna typu string to łańcuch - tekst - , a ciężko mnożyć coś innego niż liczby.

Ogółem poczytaj sobie o pętlach w C++, a także o typach danych. 

komentarz 12 września 2020 przez Dezmonths Początkujący (310 p.)
Dziękuję za pomoc
+2 głosów
odpowiedź 12 września 2020 przez VBService VIP (127,550 p.)
edycja 16 września 2020 przez VBService

How to repeat a string a variable number of times in C++?

std::string(5, '.') + "abcd";

... lub ...

std::string str("abcd");
str.insert(0, 5, '.');

... lub ...

cout.width(9);
cout.fill('.');
cout << "abcd" << endl;


output:

.....abcd
komentarz 12 września 2020 przez Dezmonths Początkujący (310 p.)
dzięki
+1 głos
odpowiedź 12 września 2020 przez wizarddos Stary wyjadacz (13,980 p.)
twój kod się nie kompiluje,I to jest w tym przypadku normalne. W języku c++ do wyświetlania napisu ileś razy używa się pętli. W przypadku który pokazałeś kompilator interpretuje to tak. "Mam pomnożyć x przez 3, ale zmienna ta to nie numer, więc tego nie podzielę". kodu nie daję bo kilku innych użytkowników dało, więc nie chcę się powtarzać

Podobne pytania

0 głosów
0 odpowiedzi 51 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez saintx Nowicjusz (120 p.)
0 głosów
1 odpowiedź 89 wizyt
pytanie zadane 18 czerwca w C# przez disaster Obywatel (1,960 p.)
+1 głos
2 odpowiedzi 202 wizyt
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

85,145 zapytań

133,948 odpowiedzi

296,959 komentarzy

56,261 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...