Tablica, kilka znaków w jednym wyrażeniu

0

Siema. Mam taką linijkę w programie:

cout<<"Moje pierwsze 3 litery imienia to: "<<name2[0]<<name2[1]<<name2[2]<<"."<<endl;

Chciałbym, żeby 3 znaki z tablicy zastąpić 1 wyrażeniem, czy jakoś tak.
Czyli:
zamiast

name2[0]<<name2[1]<<name2[2]

dać coś typu

name2[0-2]

(od 0 do 2)
Jak to zrobić?

0

jeśli ta tablica nie jest łańcuchem znaków to się nie da. W innym wypadku po prostu możesz wypisać całość lub wykorzystać odpowiednią do tego funkcje (lub metodę jeśli to string) ... w żadnym wypadku nie możesz operować na przedziałach tak jak ty chcesz.

0

Nie da się

0

Ooo. Znalazłem rozwiązanie:

name2[3] = '\0';

Wkleiłem to zaraz przed

cout<<name2<<endl;

Tylko nie wiem, czy to jest jednorazowe czy wielorazowe i jak to odwrócić?!

1

Jednorazowe? Wielorazowe? Osochozi?

można zrobić na przedziałach ;]

unsigned int lowerBorder = 0;
unsigned int higherBorder = 3;

cout<< "Moje pierwsze 3 litery imienia to: "
for (unsigned int i = lowerBorder; i < higherBorder; ++i)
{
cout << name2[i];
}
cout << "."<<endl;

Tylko przydałoby się to idiotouodpornić ;]
Można też z tego zrobić funkcję.

0
blee napisał(a)

możesz wypisać całość lub wykorzystać odpowiednią do tego funkcje (lub metodę jeśli to string)

na przykład "substr" z klasy string. Jest również odpowiednik dla napisów z C ale wysil się sam i poszukaj. Nic nie musisz samemu pisać i kombinować jak koń pod górkę to się tyczy również powyższej odpowiedzi.

0

Teraz całym name2 chyba jest name2[3] a ja chce wiedzieć jak to wróci do całości czyli np.
name2[6]
Tylko tyle, że name2 się podaje w programie i nie wiem czy będzie miało 6 znaków czy więcej, a może mniej... xD

0
#include <iterator>
#include <algorithm>

...

copy(name2, name2 + 3, ostream_iterator<char>(cout));
0
copy(name2, name2 + 3, ostream_iterator<char>(cout));

Gdzie to wlepić i jak tego używać?!

0

Wysil się trochę.

0

O, dzięki. Działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1