?
Keine Ahnung wer sich solche Übungen einfallen lässt...
Das wichtigste wäre IMHO, dass Du das, was Du in anderen Foren gelesen zu haben glaubst, vergisst oder nochmal nachliest. Denn das was Du verstanden hast ist ziemlich wirr.
Bevor Du mit strncpy() und Konsorten kommst, hier eine Lösung, die die beiden Zeichen einzeln zuweist und dabei ganz gut mit zu langen, zu kurzen und gar nicht vorhandenen strings zurechtkommt.
#include <iostream>
#include <string>
struct level{
char kurz_name[2];
level(const char* kn) {
kurz_name[0] = kn ? kn[0] : '\0';
kurz_name[1] = kn && kn[0] != '\0' ? kn[1] : '\0';
}
std::string to_string() const {
return kurz_name[1] ? std::string(kurz_name, kurz_name+2)
: kurz_name[0] ? std::string(kurz_name, kurz_name+1)
: std::string();
}
};
std::ostream& operator<<(std::ostream& out, const level& l){
return out << l.to_string();
}
int main(){
level levels[] = { nullptr, "Furble Wurble", " reitet", "auf"+1, "Asphalt bei"+6, "Utopi", "a!" };
for(auto l : levels)
std::cout << l;
std::cout << '\n';
}