C++ std::string Zuweisung erzeugt Fehler!

C++11-LIKE

Cadet 1st Year
Dabei seit
Juli 2016
Beiträge
10
Hallo,

ich habe ein großes Problem, bei dem ich wirklich nicht weiterkomme.
Hier erstmal der Quellcode(ein kleiner Teil):


Code:
//includes ...
const int SIZE_X = 50;
const int SIZE_Y = 20;
const char leer = 255; // ' '
std::vector<std::string> screen{SIZE_Y};
int screen_x = 0;

std::array<std::string, 20> level00 {
	"                                                                                                                                             ",
	"ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
	"o                   |                                                                                                                       o",
	"o                   |                                                                                                                       o",
	"o                   \\                                                                                                                       o",
	"o                    \\                                                                                                                      o",
	"o                     \\                                                                                                                     o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"o                                                                                                                                           o",
	"ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
};

int main() {
// ...
  initScreen();
// ...
}

void initScreen() {
	for ( int index = 0 ; index < SIZE_Y ; ++index ) {
		for ( int i = 0 ; i < SIZE_X ; ++i ) {
			screen[index] += leer;
		}
	}
}

void drawScreen() {
	for ( int i = 0 ; i < SIZE_Y ; ++i ) {
		for ( int n = 0 ; n < SIZE_X ; ++n ) {
			screen[i][n] = level00[i][(n+screen_x)];
		}
	}
    std::string titel = "TITLE HERE";
    std::string nummer = 123;
    std::string header = "  LEVEL: " + nummer + " - " + titel;
    screen.at(0) = header;
}

std::string titel = "TITLE HERE";
std::string nummer = std::to_string(1);
std::string header = "  LEVEL: " + nummer + " - " + titel;
screen.at(0) = header;
(Ich hoffe ich habe nichts falsch hier eingefügt - es sind nur ein paar Häppchen aus meinem Quellcode)

Das Problem ist die Zuweisung
Code:
screen.at(0) = header;
. Denn sobald ich das Programm ausführe stürzt es, ohne irgendwelche geworfenen Fehler, die mir ausgegeben werden, einfach ab. Kommentiere ich diese Zeile aus geht wieder alles ... ?

Kurios ist, dass wenn ich die Zeile in
Code:
screen.at(0) = "HEADER HERE";
ändere, läuft alles wieder!

Ich verstehe das nicht!

Ich freue mich sehr über Hilfe.
 
Zuletzt bearbeitet:

read-only

Newbie
Dabei seit
Sep. 2011
Beiträge
5
Code:
58. std::string nummer = 123;
sollte einen Fehler ausgeben.
 
Zuletzt bearbeitet:

maxwell-cs

Lt. Junior Grade
Dabei seit
Juli 2007
Beiträge
465
Ersetze doch erst mal die ganzen globalen variablen durch Member einer Klasse und rufe deinen Code aus der main auf.
Für Fragen zu kleinen in sich abgeschlossen Problemen ist eine Online-IDE wie zb cpp.sh praktisch, in die du ein (am besten minimales) vollständiges Beispiel pastest.
 
Zuletzt bearbeitet:

nullPtr

Lt. Junior Grade
Dabei seit
März 2011
Beiträge
368
Was erwartest du jetzt auf diese praktisch nicht vorhandene Fehlerbeschreibung von uns? Woran erkennst du denn, das dein Programm abstürzt, wenn es keine Fehlermeldung gibt? Siehe @read-only: Kompiliert dein Code überhaupt?
 

maxwell-cs

Lt. Junior Grade
Dabei seit
Juli 2007
Beiträge
465
Welchen Compiler verwendest du?
Ich kann mir zwar nicht vorstellen, dass die fragliche Zeile kompiliert, aber falls das ein verrückter Compiler durchgehen lässt, dann dürfte da eine implizite (natürlich verbotene) Konvertierung von int nach char const * stattfinden, die natürlich Unsinn ist und dann spätestens beim ersten Dereferenzieren crasht.
 

C++11-LIKE

Cadet 1st Year
Ersteller dieses Themas
Dabei seit
Juli 2016
Beiträge
10
oh! Ich habe natürlich das eingegeben:
Code:
std::string nummer = std::to_string(12345);
Ergänzung ()

Vielen Dank für die schnellen Antworten!
Ich habe das Problem jetzt zwar gelöst, jedoch will mir trotzdem noch nicht ganz einleuchten was vorher falsch war.

Code:
        std::string titel = "TITLE HERE";
	std::string nummer = std::to_string(1);
	screen[0] = " ";
	screen[0] += "Level: ";
	screen[0] += nummer;
	screen[0] += " - ";
	screen[0] += titel;
 
Top