Sumowanie Char (łączenie)

0

Witam

Chodzi o łączenie dwóch znaków z tablic char-ów.

char *a = "abcdef";
char *b = "abcdef";

string wynik;
wynik = a[1] + b[2];

Robiąc jak powyżej (tablice lub wskaźniki) IDE konwertuje znaki na liczy i je dodaje dając jakiś znak zapisany do zmiennej wynik wynikający z kodów znaków dodanych. Poszukiwany przeze mnie wynik to np.: "bc" a nie coś o kodzie 197 (krzyżyk).

Pozdrawiam.

2

To

char *a = "abcdef";

nie jest tablica charów. Co innego to:

char a[] = "abcdef";

Aby połączyć te dwa znaki możesz użyć czegoś takiego (C++11)

std::string wynik{ a[1], b[2] };

Albo lekko modyfikując Twój zapis:

std::string wynik;
wynik = std::string() + a[1] + b[2];

Wtedy operator + jest odpowiednio przeciążony.

Poza tym to nie IDE konwertuje na liczby a kompilator.

2

Ja tylko dorzucę, że to nie jest poprawny kod C++ w ogóle: https://dev.krzaq.cc/post/stop-assigning-string-literals-to-char-star-already/

0

Podsumowując zacznę tak, podana metoda z przeciążaniem działa, jednak czasowo jest dużo wolniejsza niż potraktowanie obu tablic char-ów jako stringi i wycinanie ze stringów wskazanych znaków.
Co do uwagi o niepoprawności kodu, to już inna sprawa. Bardzo często w różnych poradnikach i tutorialach spotkałem się z deklaracjami typu

char *a = "abcdef";

no i kwestię tego kiedy można to stosować, kiedy nie pozostawiam już zwolennikom mieszania C, C++ i czasami jeszcze czegoś innego.

1

Te dwa zapisy będą działać w przypadku odczytu, jednak wynik próby zmiany zawartości stałej tekstowej (czyli wersji *a = abcdef) nie jest zdefiniowany i mogą pojawić się problemy.

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