如何使用QT从文本文件中读取Point(x,y)数据
How to read Point(x,y) data from text file using QT?
使用 QT 我想读取存储在文本文件中的坐标值。文本文件将包含以下内容。
80.0910,13.1289
80.0911,13.1289
80.0912,13.1290
由于这些是GPS值,因此它将随着时间的推移而不断变化。 所以每次我只想从这个文件中读取最后一个值并将其存储为
x=80.0912 y=13.1290
这意味着我想拆分最后一行并存储为 x 和 y。
我在这个论坛上看到了类似的问题,但没有什么能满足我拆分和存储数据的需求。
QFile inputFile(":/input.txt");
if (inputFile.open(QIODevice::ReadOnly))
{
/* WHAT
SHOULD
I DO
HERE */
}
如果你的线条总是有相同的长度,你可以做这样的事情:
inputFile.seek(inputFile.size - LENGTH_OF_LINE);
QString line = QString::fromLocal8Bit(inputFile.readLine());
或者只是使用 QTextStream 遍历所有行(这将适用于动态大小的行(:
QTextStream ts(inputFile);
QString line;
while(!ts.atEnd())
line = ts.readLine();
编辑:
对于拆分,您可以使用:
QStringList list = line.split(",");
double x,y;
if(list.size() == 2)
{
x = list.at(0).toDouble();
y = list.at(1).toDouble();
}else{
qDebug()<<"Line not having coordinates: "<<line;
}
编辑:
将两者连接并进行少量编辑将始终仅对最后一行产生有效结果,错误时会产生 0/0 坐标:
QTextStream ts(inputFile);
QString line;
while(!ts.atEnd())
{
QString temp = ts.readline();
if(temp.size()>2)
{
//having more then 2 chars (e.g. 8,6 as coordinates)
line = ts.readLine();
}
}
QStringList list = line.split(",");
double x = 0.0;
double y = 0.0;
if(list.size() == 2)
{
x = list.at(0).toDouble();
y = list.at(1).toDouble();
}else{
qDebug()<<"Line not having coordinates: "<<line;
}
尝试以下代码扫描最后一行:
QTextStream stream(inputFile);
QString line;
while(!stream.atEnd())
line = stream.readLine();
float x, y;
sscanf((char*)line.toAscii().data(), "%2.4f,%2.4f", &x, &y);
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何对点云数据进行排序
- "has-a"点类成员数据的矩形类。使用 Point 类的成员函数时,成员数据不会更新
- 如何使用QT从文本文件中读取Point(x,y)数据
- 如何将两个双数据类型元素转换为一个Point数据类型
- 在OpenCV中将Point数据类型转换为int