Lorsque j'utilise std::istringstream
pour lire des valeurs de pixels grises dans un fichier (0-255), je remarque un comportement étrange et je ne comprends pas ce qui se passe.C++ Lecture des ints en tant que caractères non signés en utilisant istringstream
Pour conserver la mémoire, je souhaite lire ces valeurs dans des caractères non signés (puisqu'ils ont la même plage 0-255). Cependant, il semble y avoir une sorte de moulage/troncature en cours.
fichier d'entrée:
194
194
155
155
124
194
Voici mon code:
getline(fp, line);
unsigned char temp;
istringstream iss(line);
iss >> temp;
Lorsque la valeur dans le fichier est 194
, par exemple, la valeur entière temp est 49
...
Quel type de casting est en cours?
Vous pouvez utiliser une entrée non formatée: 'std :: istream :: get' pour des octets. –
La question n'est pas de corriger le code, c'est quel type de casting/troncature se produit? – user2600959
Veuillez être plus clair quant à vos données d'entrée. Pour le moment nous ne pouvons que _guess_ à son format, car "lire des valeurs à partir d'un fichier" ne nous dit effectivement rien! Ma conjecture est des nombres délimités par des espaces dans la gamme 0 <= x <= 255 en décimal lisible par l'homme via ASCII. –