帮助 - 将.txt文件中的数字加载到变量(c ++)

时间:2011-03-22 02:26:21

标签: c++ variables file-io numbers

程序2应显示111,222和333作为x,y,z的结果。 我想读取文本文件,行到行,并将一行保存到一个变量 喜欢: Line1 = x LINE2 = Y Line3 = z 有人能帮助我吗?

计划1

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

float x, y, z;

int main()
{   
    x=111;
    y=222;
    z=333;
    ofstream meuarquivo;
    meuarquivo.open ("brasil.txt");
    meuarquivo << x << "\n";
    meuarquivo << y << "\n";
    meuarquivo << z << "\n";

    meuarquivo.close ();

    return 0;
}

计划2

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

float x, y, z;


int main(){ 
    x=0;
    y=0;
    z=0;

    char nomedoarquivo[90];
    ifstream objeto;
    cin.getline (nomedoarquivo, 90);

    objeto.open (nomedoarquivo);

    if (!objeto.is_open ()){
        exit (EXIT_FAILURE);}

    while (objeto.good()){
        string r;
        objeto >>r;

    }

    cout << "\n" << x << "\n" << y << "\n" << z << "\n";
    return 0;
}

2 个答案:

答案 0 :(得分:1)

第二个程序需要从文件中读取输入。但该程序没有打开第一个程序写入的文件。

  1. 使用std :: vector存储从文件中读取的字符串。
  2. 以读取模式打开文件,第一个程序将文本写入,作为第一个程序的一部分。
  3. push_back每个读取字符串到向量,直到到达文件末尾。
  4. 迭代向量并使用std::string转换atoi

    int readNumber = atoi((*iter).c_str()) ;

  5. 这应该会给你一个想法。

答案 1 :(得分:1)

代码段

while (objeto.good()){
    string r;
    objeto >>r;
}

基本上意味着您将每个数字作为字符串读取,并在循环范围结束时立即将其丢弃。相反,我建议创建一个大小为3的浮点数组,使用循环读入它们,然后将每个元素的值分配给x,y和z,如下所示:

float vals[3];
int i = 0;
while (objeto.good()) {
    objeto >> vals[i];
    i++;
}
x = vals[0]; y = vals[1]; z = vals[2];