如何将字符串中的多个浮点数转换为多个浮点数?(sscanf)

How to convert multiple floats in a string to multiple floats? (sscanf)

本文关键字:浮点数 sscanf 转换 字符串      更新时间:2023-10-16

易于理解:

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;

也就是说,假设stringchar const*类型,您的代码应该按原样工作。

代码从一开始就是正确的,而且@user657267的代码是工作的。

问题是在我的代码中,字符串是用,作为分隔符从十进制到整数的变量,我做了一个简单的函数来改变,.和它的工作现在。

谢谢你的帮助