首页 > 解决方案 > 如何修复矢量不打印文件中的值

问题描述

我正在尝试从文本文件中逐行获取一些值:

17.09 284.60 486.01 34.12 12.04 1.20 2.33 36.85 73.44
31.25 196.09 323.26 69.76 47.33 79.82 11.42 27.97 66.61
28.76 41.45 992.29 1.29 42.33 10.83 19.16 5.86 1.88

取这些值并将其放入向量中。每行都有要在计算中使用的值。

我的代码:

#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <vector>
using namespace std;

int main() {

    ifstream xfile;
    string input;
    double num=0;
    int count = 0;
    vector <double> myvector;
    cout << "Input the file: ";
    cin >> input;

    xfile.open(input);

    if (xfile.is_open()) {
        cout << "File accessed!" << endl;
        while (getline(xfile, input)) {
            count++;
            myvector.push_back(num);
        }

    }

    else {

        cout << "File opening failed!"<<endl;
    }


    cout << "Numbers of lines in the file : " << count << endl;

    for (int i = 0; i < myvector.size(); i++) {

            cout << myvector[i] << "\t";

        }
    cin.fail();
    return 0;
}

我的输出有些正确,只是它只打印了零: https ://ibb.co/xqwT1hR

编辑:输入是文件名。“ahu_long.txt”

标签: c++visual-studio

解决方案


你从来没有使用过你的num变量。

double num=0;
....
....
size_t pos = 0;
std::string token;
while (getline(xfile, input)) {
            count++;
            // you need convert your "input" to a double and save it to "num"
            while ((pos = input.find(" ")) != std::string::npos) {
                token = input.substr(0, pos);
                // std::cout << token << std::endl;
                num = atof(token.c_str());
                myvector.push_back(num);
                input.erase(0, pos + delimiter.length());
            }
        }

使用从文件中读取的内容更改变量。


推荐阅读