mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2024-12-04 01:39:16 +08:00
A better fix to read unichars. Imbue C locale always since on different systems, default locale will give different results.
This commit is contained in:
parent
0364832ab8
commit
0c7139ce09
@ -53,14 +53,10 @@ void Classify::ReadNewCutoffs(TFile* fp, uint16_t* Cutoffs) {
|
||||
char line[kMaxLineSize];
|
||||
while (fp->FGets(line, kMaxLineSize) != nullptr) {
|
||||
std::string Class;
|
||||
auto p = line;
|
||||
while (*p != ' ' && p - line < kMaxLineSize)
|
||||
Class.push_back(*p++);
|
||||
CLASS_ID ClassId;
|
||||
// do not use stream to extract Class as it may contain unicode spaces (0xA0)
|
||||
// they are eaten by stream, but they are a part of Class
|
||||
std::istringstream stream(p);
|
||||
stream >> Cutoff;
|
||||
std::istringstream stream(line);
|
||||
stream.imbue(std::locale::classic());
|
||||
stream >> Class >> Cutoff;
|
||||
if (stream.fail()) {
|
||||
break;
|
||||
}
|
||||
|
@ -208,6 +208,7 @@ NORM_PROTOS *Classify::ReadNormProtos(TFile *fp) {
|
||||
char line[kMaxLineSize];
|
||||
while (fp->FGets(line, kMaxLineSize) != nullptr) {
|
||||
std::istringstream stream(line);
|
||||
stream.imbue(std::locale::classic());
|
||||
stream >> unichar >> NumProtos;
|
||||
if (stream.fail()) {
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user