提问人:Yann 提问时间:6/24/2023 更新时间:6/25/2023 访问量:318
使用 NRF MCU 和 Zephyr 在 C++ 中浮点到字符串
float to string in C++ using NRF MCU and Zephyr
问:
我只想将浮点数转换为字符串。通常,这是使用 C++ 标准库和命令完成的。但是,当我在 MCU nrf52840 上编程时,我遇到了垃圾。to_string(float)
这是代码
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include<float.h>
#include<string>
LOG_MODULE_REGISTER(main);
using namespace std;
int main(void){
float myFloat=3.3;
string str;
str=to_string(myFloat);
char buffer[64];
int ret = snprintf(buffer, sizeof buffer, "%f", myFloat);
if (ret < 0) {
return EXIT_FAILURE;
}
if (ret >= sizeof buffer) {
// / Result was truncated - resize the buffer and retry.
}
LOG_INF("end");
}
项目文件启用了标准 C++ 库:
CONFIG_LOG=y
CONFIG_STD_CPP20=y
CONFIG_CPP_MAIN=y
CONFIG_CPLUSPLUS=y
CONFIG_LIB_CPLUSPLUS=y
在调试期间,我得到了以下垃圾:
长度和值是完全错误的。 尝试执行相同的任务并转换为字符也会失败。
使用 works 转换整数。
并且日志记录浮动使用 并且也有效。因此,我必须错过一些东西。to_string
printk
LOG_INF
答:
0赞
Yann
6/25/2023
#1
添加到项目配置文件中,即使 zephyr 告诉它已经过时了。它修复了字符串错误和 sprintf 错误。CONFIG_NEWLIB_LIBC=y CONFIG_NEWLIB_LIBC_NANO=n
评论