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

wypisywanie ciągu znaków

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+2 głosów
889 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 Mędrzec (155,140 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 Pasjonat (15,610 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 Ekspert (256,320 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 Nałogowiec (27,010 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 363 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez saintx Nowicjusz (120 p.)
0 głosów
1 odpowiedź 815 wizyt
pytanie zadane 18 czerwca 2021 w C# przez disaster Bywalec (2,120 p.)
+1 głos
2 odpowiedzi 793 wizyt

93,187 zapytań

142,203 odpowiedzi

322,017 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2365p. - dia-Chann
  2. 2326p. - Łukasz Piwowar
  3. 2315p. - Łukasz Eckert
  4. 2301p. - CC PL
  5. 2269p. - Tomasz Bielak
  6. 2235p. - Łukasz Siedlecki
  7. 2232p. - rucin93
  8. 2169p. - Marcin Putra
  9. 2164p. - Adrian Wieprzkowicz
  10. 2006p. - Michal Drewniak
  11. 1901p. - Mikbac
  12. 1806p. - Dawid128
  13. 1744p. - rafalszastok
  14. 1734p. - Anonim 3619784
  15. 1487p. - Michał Telesz
Szczegóły i pełne wyniki

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 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...