容易理解:
string=" 2.34 5.21 7.22\n";我希望获得字符串的浮点数以浮动变量:
float x,y,z;
sscanf(string, " %f %f %f\n",&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]!='\0';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 sucesso\n");
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 %f\n",&x,&y,&z);
cout << x << " " << y << " " << z << endl;
strcpy(buffer,"");
}
}else if(acabou(incomingData)){
printf("%s",buffer);
sscanf(buffer,"%f %f %f\n",&x,&y,&z);
cout << x << " " << y << " " << z << endl;
strcpy(buffer,"");
}
}
return 0;
}发布于 2014-07-11 03:38:39
代码从一开始就正确,@ code 657267的代码也在工作。
问题是在我的代码中,字符串以,作为分隔符,从十进制到整数,我做了一个简单的函数来将,更改为.,现在它可以工作了。
谢谢你的帮助。
发布于 2014-07-11 02:43:09
坚持使用C++
std::istringstream iss{string};
float x{}, y{}, z{};
iss >> x >> y >> z;尽管如此,假设string是char const*类型的,那么您的代码应该按照-原样工作。
https://stackoverflow.com/questions/24689296
复制相似问题