我正在编写一个 eosio 智能合约,它基本上是 C++ 编译成 Webassembly。
使用stof或strtof(要浮动的字符串)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 的一些设计限制吗?一般情况下这是否应该在 Webassembly 中工作(没有 eosio 智能合约)。或者我只是在这里做错了什么?