0

テキストファイルから読み取り、整数をプロットするプログラムを作成しています。これが私がこれまでに持っているものです

#include "realtime.h"
#include "ui_realtime.h"
#include <QFile>
#include<QIODevice>
Realtime::Realtime(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Realtime)
{
    ui->setupUi(this);
    int size = 1000;
    QVector<double> x(size), y(size);
    for (int i=0; i<size; i++)
    {
        x[i]= i;
        y[i]= i ;
    }
    ui->plot->addGraph();
    ui->plot->graph(0)->setData(x,y);
    ui->plot->xAxis->setRange(0,10);
    ui->plot->yAxis->setRange(0,10);
}

Realtime::~Realtime()
{
    delete ui;
} 
int main()
{
    std::vector<int>ints;
    QFile file("2dplotarray.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))

        while (!file.atEnd())
        {
            QByteArray line = file.readLine();
            QDataStream ds(line);
            int int_in_line = 0;
            ds >> int_in_line;
            ints.push_back(int_in_line);
        }
    return 0    ;
}

現在の x と y の値は無視します。これは、プロット機能をテストしたものです。テキスト ファイルをプロットの y 値に入れるにはどうすればよいですか? テキストファイルは次のようになります (コードではなく、表示するための最良の方法です)

    1
    2
    3
    4
    etc...
4

1 に答える 1

0

明言されていないポイントが QT クラスを使用することでない限り、私があなただったら、入力ファイル ストリームを使用するだけです。これらの値を読み取るコードは次のようになります。

#include <fstream>
#include <string>

int main()
{
    std::vector<int> vecValues;
    std::ifstream file("yourfilename.txt");
    if (file.is_open())
    {    
        //if you can anticipate that the only values will be integers
        //then this will work just fine
        int value;
        while (file >> value)
        {
            vecValues.push_back(value);
        }

        //or you could modify the following if you expected non-numbers
        //in your file and need more control over handling them
        //std::string fileLine;
        //while ( std::getline(file, fileLine) )
        //{
        //  vecValues.push_back(std::atoi(fileLine.c_str()));
        //}

        file.close();
    }

    return 0;
}
于 2016-03-04T07:06:18.713 に答える