Справка - загрузить числа из файла .txt в переменные (c ++) - PullRequest
1 голос
/ 22 марта 2011

Программа 2 должна показывать 111, 222 и 333 как результат для x, y, z. Я хочу прочитать текстовый файл, строка за строкой, и сохранить одну строку в одну переменную лайк: Line1 = x Line2 = у 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 ]

1 голос
/ 22 марта 2011

Сегмент кода

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

в основном означает, что вы читаете каждое число как строку и отбрасываете его сразу после окончания области видимости цикла.Вместо этого я бы предложил создать массив с плавающей точкой размера три, считывая их с помощью цикла, а затем присваивая значения каждого из элементов 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];
1 голос
/ 22 марта 2011

Вторая программа должна прочитать входные данные из файла.Но программа не открывает файл, в который записана первая программа.

  1. Иметь std :: vector для хранения строк, которые читаются из файла.
  2. Открыть файл в режиме чтения, в который первая программа записала текст, как частьпервой программы.
  3. push_back каждая прочитанная строка в векторе, пока не будет достигнут конец файла.
  4. Итерация по вектору и преобразование std::string с использованием atoi,

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

Это должно дать вам представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...