gpt4 book ai didi

c++ - 如何将数据从终端传递给程序?

转载 作者:行者123 更新时间:2023-11-30 04:15:03 25 4
gpt4 key购买 nike

我正在使用一个 GPS 接收器,它将使用这样的 C++ 程序在终端中连续打印 GPS 消息

Latitude:13.3  Longitude:80.25
Latitude:13.4 Longitude:80.27
Latitude:13.5 Longitude:80.28

我想将这些数据放入我的 C++ 程序(QT 应用程序)

下面是我的完整程序代码

void QgsGpsPlotPluginGui::on_buttonBox_accepted()
{

QString myPluginsDir = "usr/lib/qgis/plugins";
QgsProviderRegistry::instance(myPluginsDir);


QgsVectorLayer * mypLayer = new QgsVectorLayer("/home/mit/Documents/Dwl/GIS DataBase/india_placename.shp","GPS","ogr");

QgsSingleSymbolRenderer *mypRenderer = new
QgsSingleSymbolRenderer(mypLayer->geometryType());
QList <QgsMapCanvasLayer> myLayerSet;
mypLayer->setRenderer(mypRenderer);
if (mypLayer->isValid())
{
qDebug("Layer is valid");
}
else
{
qDebug("Layer is NOT valid");
}

// Add the Vector Layer to the Layer Registry
QgsMapLayerRegistry::instance()->addMapLayer(mypLayer, TRUE);
// Add the Layer to the Layer Set
myLayerSet.append(QgsMapCanvasLayer(mypLayer, TRUE));
QgsMapCanvas * mypMapCanvas = new QgsMapCanvas(0, 0);
mypMapCanvas->setExtent(mypLayer->extent());
mypMapCanvas->enableAntiAliasing(true);
mypMapCanvas->setCanvasColor(QColor(255, 255, 255));
mypMapCanvas->freeze(false);


QgsFeature * mFeature = new QgsFeature();
QgsGeometry * geom = QgsGeometry::fromPoint(*p);

QGis::GeometryType geometryType=QGis::Point;
QgsRubberBand * mrub = new QgsRubberBand (mypMapCanvas,geometryType);
QgsPoint * p = new QgsPoint();
double latitude =13.3;
double longitude = 80.25;
p->setX(latitude);
p->setY(longitude);
mrub->setToGeometry(geom,mypLayer);
mrub->show()

}

在上面的代码中,我像这样手动输入了纬度和经度的值,

    double latitude =13.3;
double longitude = 80.25;
p->setX(latitude);
p->setY(longitude);

但我需要从终端获取这些值。

这两个程序都是用c++编写的,但它们属于不同的框架。

最佳答案

我假设您的图书馆没有您可以使用的 API。那么集成它们的一种相当直接的方法就是使用管道。您可以快速执行类似

gps_program | qt_program

现在您可以通过标准输入获取坐标。

更复杂的设置方法是使用 exec 和 fork。您创建管道对象,然后在其中一个分支上使用 exec gps_program fork 和运行。您可以完全在代码中完成此操作,而无需依赖 bash 或类似的东西。您仍然必须以相同的方式解析来自管道的数据。

关于c++ - 如何将数据从终端传递给程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18569909/

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