C++: Sonderzeichen lösen Problem aus?

Hallo Leute,

ich habe ein Problem mit Sonderzeichen.

Sonderzeichen wären:

und Zeichen mit Akzent, z.B. ê.

Hier mein Code:

for (auto & p : fs::directory_iterator(VARIABLE)) {
  fs::path pn = p.path();

  if (is_regular_file(pn)) {
    std::string ps = pn.string();
    do_something(ps)
  }
  else {
    give_me_some_error();
  }

Führe ich den Code eingebaut und mit entsprechenden Parametern aus, funktioniert dieser sehr gut und gibt mir auch die richtigen Ergebnisse zurück.

Problem ist, wenn ein oder mehrere (auch andere) Sonderzeichen, wie oben genannt, kommen. Dann wirft er mir bei

std::string ps = pn.string();

einen Fehler (siehe Bild) aus.

Unter Details anzeigen kommt dann:

Unbehandelte Ausnahme bei 0x755135D2 in Test1.exe: Microsoft C++-Ausnahme: std::system_error bei Speicherort 0x0090EF3C.

-

und wenn ich auf Ausnahmeeinstellungen gehe, kommt, dass er von Kernelbase.dll ausgelöst wurde.

Nach langem Suchen via Google habe ich zum einen herausgefunden, ich solle doch statt path() die u8path() nehmen. Das wirft mir jedoch einen Fehler aus (außer ich habe es falsch gemacht, ich bin neu in C++).

Und ich soll in den Einstellungen das Charset auf Unicode umstellen.

Das hat aber alles nichts gebracht.

Infos:

  • Ich nutze die neueste Version von Visual Studio 2019 (heute; 16.12 aktualisiert).
  • Ich habe schon gegoogelt, das hat jedoch nichts gebracht.
  • Die oben gezeigte for-Schleife ist in einer Funktion drinnen, wo die benötigten Parameter übergeben werden.
  • Das Programm funktioniert, solange kein Sonderzeichen kommt.

Ich hoffe, jemand von euch kann mir helfen. Ich bin echt am Verzweifeln.

Weitere Anmerkungen:

Ich habe gerade gesehen, dass mir, wenn ich über den String gehe, zusätzlich noch ausgegeben wird: "Fehler beim Lesen der Zeichenfolge". Ich weiß nicht ob das weiterhilft.

Bild zum Beitrag
Computer, Fehler, programmieren, Sonderzeichen, CPP, Visual Studio, UTF-8

Meistgelesene Beiträge zum Thema Fehler