Я пишу умный контракт 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 поверх него). Или я тут что-то не так делаю?