std::ifstream ließt nicht vorhandenes 'á'
-
Ich hab mir von hier: http://thefree3dmodels.com/stuff/vehicles/ship_boat/13-1-0-622 ein Boot im obj Dateiformat besorgt. Beim Einlesen der Datei stoße ich auf ein komisches zeichen: 'á' - einfach mal den Code von unten damit laufen lassen - dieses Zeichen taucht aber in der Orginaldatei nicht auf - woher kommt dieses Zeichen? Wenn ich das Array data wieder rausschreibe taucht dort auch nicht das Zeichen 'á' auf.
#include <iostream> #include <cassert> #include <vector> #include <fstream> using namespace std; int main() { std::ifstream infile; infile.open("Ship - boat.obj", std::ios::binary); infile.seekg(0, std::ios::end); size_t file_size_in_byte = infile.tellg(); infile.seekg(0, std::ios::beg); std::vector<char> data; data.resize(file_size_in_byte); infile.read(&data[0], file_size_in_byte); // Check data for (int i = 0; i < file_size_in_byte; i++) { unsigned char c = data[i]; if (isdigit(c) || isalpha(c) || c == '(' || c == '_' || c == ')' || c == '-' || c == '+' || c == '/' || c == '#' || c == '.' || c == ',' || c == '\n' || c == '\t' || c == ' ') { // alles okay... } else { // was für ein komische Zeichen? std::ofstream outfile("debugobj2.txt"); outfile << data[i]; // davor for (int a = 0; a < 100; a++) outfile << data[i-(100-a+1)]; for (int a = 0; a < 100; a++) outfile << data[i+a]; } } return 0; }wenn ich statt
unsigned char c = data[i];folgendes verwende:
char c = data[i];erhalte ich eine felgeschlagen Assertion in isdigit() - warum ist das so?
-
Agin34 schrieb:
Ich hab mir von hier: http://thefree3dmodels.com/stuff/vehicles/ship_boat/13-1-0-622 ein Boot im obj Dateiformat besorgt. Beim Einlesen der Datei stoße ich auf ein komisches zeichen: 'á' - einfach mal den Code von unten damit laufen lassen - dieses Zeichen taucht aber in der Orginaldatei nicht auf - woher kommt dieses Zeichen? Wenn ich das Array data wieder rausschreibe taucht dort auch nicht das Zeichen 'á' auf.
Oje...ich leide unter Langeweile heute...

Schau Dir mal Zeile 103991 Deiner .obj Datei an, da ist Kauderwelsch...
-
oh... tatsächlich ....