C++ std::string Zuweisung erzeugt Fehler!

C++11-LIKE

Cadet 1st Year
Registriert
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:
Code:
58. std::string nummer = 123;
sollte einen Fehler ausgeben.
 
Zuletzt bearbeitet:
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:
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?
 
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.
 
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;
 
C++11-LIKE schrieb:
oh! Ich habe natürlich das eingegeben:
Bitte poste nur Code, den du exakt so versucht hast. Mit unvollständigen oder sogar ungenauen Codefragmenten verschwendest du deine und unsere Zeit.
 
Zurück
Oben