如何将字符串中的多个浮点数转换为多个浮点数?(sscanf)
How to convert multiple floats in a string to multiple floats? (sscanf)
易于理解:
string=" 2.34 5.21 7.22n";
我想让字符串的浮点数浮动变量:
float x,y,z;
sscanf(string, " %f %f %fn",&x,&y,&z);
它应该是这样的,但它不工作,如何正确转换它?
——编辑——
既然没有工作,让我们看看是否有什么问题与我的代码的其余部分:
#include <iostream>
#include <stdio.h>
#include <tchar.h>
#include "SerialClass.h" // Library described above
#include <string>
using namespace std;
bool acabou(char str[]){
for(int i=0;str[i]!=' ';i++){
if(str[i]=='n'){
return true;
}
}
return false;
}
int main(){
float x,y,z;
char buffer[256] = "";
Serial* SP = new Serial("\\.\COM5");
if (SP->IsConnected())
printf("Conectado com sucesson");
while(SP->IsConnected()){
char incomingData[256] = "";
int dataLength = 256;
int readResult = 0;
readResult = SP->ReadData(incomingData,dataLength);
if(readResult!=-1){
strcat(buffer,incomingData);
if(acabou(incomingData)){
printf("%s",buffer);
sscanf(buffer,"%f %f %fn",&x,&y,&z);
cout << x << " " << y << " " << z << endl;
strcpy(buffer,"");
}
}else if(acabou(incomingData)){
printf("%s",buffer);
sscanf(buffer,"%f %f %fn",&x,&y,&z);
cout << x << " " << y << " " << z << endl;
strcpy(buffer,"");
}
}
return 0;
}
坚持用c++
std::istringstream iss{string};
float x{}, y{}, z{};
iss >> x >> y >> z;
也就是说,假设string
是char const*
类型,您的代码应该按原样工作。
代码从一开始就是正确的,而且@user657267的代码是工作的。
问题是在我的代码中,字符串是用,
作为分隔符从十进制到整数的变量,我做了一个简单的函数来改变,
到.
和它的工作现在。
谢谢你的帮助
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 使用浮点数和双精度数的非常小数字的数学
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 返回浮点数的小数位数
- txt 文件中浮点数的最大和最小值
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- 将浮点数转换为无符号字符数组并打印出来
- 如何将时间字符串 (M:SS) 转换为浮点数
- 如何将浮点数(*)[6]转换为浮点**类型?
- C++将浮点数乘以分数
- 如何将浮点数转换为uint8_t?
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何在C++(Arduino)中将浮点数组转换为字节数组
- Arduino使用sscanf读取浮点数
- 如何使用 sscanf 提取浮点数?
- 如何将字符串中的多个浮点数转换为多个浮点数?(sscanf)