Использование stof или strtof (string to float) в C ++, скомпилированном в Webassembly, дает мне ошибку во время выполнения - PullRequest
0 голосов
/ 09 января 2020

Я пишу умный контракт eosio, который в основном является C ++, скомпилированным для Webassembly.

При использовании stof или strtof (string to float), я получаю ошибка cause: access violation\n${callstack} при запуске действия (в основном, функции). Интересно, что stoi работает нормально.

Пример кода

//Will both give the error for any string
//including both valid float representations (e.g. "10.23")
//and also invalid float representations (e.g. "Hello World")
ACTION testcontract::parser1(string text) {
  float val = stof(text);
}
ACTION testcontract::floatparser2(string text) {
  float val = strtof(text.c_str(), nullptr);
}

//Will work
ACTION testcontract::intparser(string text) {
  uint32_t val = stoi(text);
}

Это из-за некоторых конструктивных ограничений веб-сборки? Должно ли это работать в Webassembly в целом (без умного контракта eosio поверх него). Или я тут что-то не так делаю?

...