gpt4 book ai didi

c++ - Qt 段错误strtod

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:57 25 4
gpt4 key购买 nike

每当我尝试从 C 字符串 (char *) 解析数字(即 float 、 double 等)时,我都会遇到段错误并且它非常一致。

关于实际代码:

//aLocation is a C++ object with two variables double Latitude & double Longitude. 
char** tokens; //Gets used in a string split function.
char* pEnd;
aLocation.setLatitude(strtod(tokens[0],&pEnd)); //tokens[0] = "26.379165"
aLocation.setLongitude(strtod(tokens[1],&pEnd)); //tokens[1] = "-80.101639"

应该提到的是,我已经尝试过替代函数和数据类型(即 atoi、atof、strtol、strtof 和 strtol)。

我检查了字符串拆分函数,它按预期工作。我可以使用“qDebug("Location: %s,%s",tokens[0],tokens 1 );”打印 token 值。以上两个 strtod() 函数调用都出现段错误(一起或单独)。当我从我的应用程序中删除以上两行代码时,我根本没有遇到任何序列错误。


运行环境是我使用 Buildroot 和较旧的 Linux 内核 (3.4.39) 创建的自定义 Linux 镜像。该应用程序是使用 Qt 4.8.4 SDK 用 C++ 编写的。我运行应用程序的设备是 alix3d主板,带有一些自定义 IC 添加(通过 USB)。我也在使用 ld-uClibc.so.0 库。

位置.h:

#ifndef LOCATION_H
#define LOCATION_H

class Location
{
public:
explicit Location();
void setLatitude(double aLat);
double getLatitude();
void setLongitude(double aLong);
double getLongitude();


private:
double latitude;
double longitude;

};

#endif // LOCATION_H

位置.cpp:

#include "location.h"

Location::Location()
{
}

void Location::setLatitude(double aLat){latitude=aLat;}

double Location::getLatitude(){return latitude;}

void Location::setLongitude(double aLong){longitude = aLong;}

double Location::getLongitude(){return longitude;}

更新

Case 1: this->aLocation.setLatitude(1); ------> works (No additional code above or below)

Case 2:double aLat = (double)strtod(tokens[0], &pEnd); ---> works (No additional code below this)

Case 3: Below Code Seg faults
double aLat = (double)strtod(tokens[0], &pEnd);
this->rsuLocation.setLatitude(aLat);

最佳答案

我做了一个非常笨的 Action ,忘记调用父对象的构造函数。

此外,我还更改了包含语句(即 #include )以及 QtCore 库目录(即 #include )。

关于c++ - Qt 段错误strtod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38168042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com