C++ 如何将字符串中的多个浮点数转换为多个浮点数?(sscanf)
易于理解:C++ 如何将字符串中的多个浮点数转换为多个浮点数?(sscanf),c++,type-conversion,C++,Type Conversion,易于理解: 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>
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;
}
#包括
#包括
#包括
#包括上述“SerialClass.h”//Library
#包括
使用名称空间std;
bool-acabou(char-str[]){
对于(int i=0;str[i]!='\0';i++){
如果(str[i]='\n'){
返回true;
}
}
返回false;
}
int main(){
浮动x,y,z;
字符缓冲区[256]=“”;
串行*SP=新串行(“\\.\\COM5”);
如果(SP->IsConnected())
printf(“Conectado com successo\n”);
而(SP->IsConnected()){
字符输入数据[256]=“”;
int dataLength=256;
int readResult=0;
readResult=SP->ReadData(输入数据,数据长度);
如果(readResult!=-1){
strcat(缓冲区、输入数据);
if(acabou(收入数据)){
printf(“%s”,缓冲区);
sscanf(缓冲区,“%f%f%f\n”、&x、&y、&z);
不能坚持用C++
std::istringstream iss{string};
float x{}, y{}, z{};
iss >> x >> y >> z;
也就是说,假设string
是char const*
类型,您的代码应该按原样工作。代码从一开始就是正确的,@user657267的代码也在工作
问题出在我的代码中,字符串带有,
作为变量从十进制到整数的分隔符,我做了一个简单的函数,将,
更改为,
,现在它就可以工作了
谢谢你的帮助。解释一下那里发生了什么?@ GuelHeMGGILADADARSA。我不确定我说的话是否能使代码更清晰,你不理解哪个部分?这是非常基础的C++。哦,我现在明白了,哈哈,但是为什么浮体有括号?{}@Guillhermegarciadarosa我只是习惯于使用统一初始化,这与编写x=0;
它不起作用一样,我的字符串是一个char str[256],只是说“它不起作用”这是对问题的糟糕描述。你是如何测试的?你得到了什么结果?你期望得到什么结果?字符串是achar*
?我在屏幕上打印收到的值,它们都是0或一些疯狂的东西,但没有十进制值是receivedYes@Ben its a char*它在这里编译并运行良好: