Как мне прочитать числа в выходной файл в C ++ - PullRequest
1 голос
/ 13 апреля 2011

Как я могу получить номера из infile для использования в outfile?

например, скажем, я хочу читать номера в infile и использовать эти числа для отображения в качестве идентификаторов студентов в outfile.1003 *

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

istream_iterator и ostream_iterator довольно забавны.

Проверьте, какие аккуратные вещи вы можете сделать с ним.Вот простой пример конвертера Фаренгейта в Цельсий, который считывает ввод и выводит:

#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>

using namespace std;
typedef float input_type;
static const input_type factor = 5.0f / 9.0f;

struct f_to_c : public unary_function<input_type, input_type>
{
    input_type operator()(const input_type x) const
    { return (x - 32) * factor; }
};

int main(int argc, char* argv[])
{
// F to C
    transform(
        istream_iterator<input_type>(cin),
        istream_iterator<input_type>(),
        ostream_iterator<input_type>(cout, "\n"),
        f_to_c()
    );

    return 0;
}
0 голосов
/ 13 апреля 2011

Это немного зависит от того, как вы записали значения.

Очевидно, вам нужно открыть файл.
Если вы пометите данные с помощью outfile << data, вы, вероятно, прочитаете их с помощью infile >> data.

Если вы использовали fprintf(), вы, вероятно, прочитаете его с fscanf(), но это не обязательно.

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

Удачи!

Обновление
Вы, кажется, довольно растеряны.Я написал короткую программу, которая делает некоторые вещи, которые вам нужны, но я не включил никаких комментариев, поэтому вам нужно прочитать код.Посмотрите, сможете ли вы понять, что вам нужно.

#include <iostream>
#include <fstream>
#include <string>


bool WriteNums(const std::string &sFileName, int nVal, double dVal)
{
    std::ofstream ofstr(sFileName);
    if (!ofstr.is_open())
    {
        std::cerr << "Open output file failed\n";
        return false;
    }
    ofstr << nVal << " " << dVal;
    if (ofstr.fail())
    {
        std::cerr << "Write to file failed\n";
        return false;
    }
    return true;
}

bool ReadNums(const std::string &sFileName, int &nVal, double &dVal)
{
    std::ifstream ifstr(sFileName);
    if (!ifstr.is_open())
    {
        std::cerr << "Open input file failed\n";
        return false;
    }
    ifstr >> nVal >> dVal;
    if (ifstr.fail())
    {
        std::cerr << "Read from file failed\n";
        return false;
    }
    return true;
}

int main()
{
    const std::string sFileName("MyStyff.txt");
    if(WriteNums(sFileName, 42, 1.23456))
    {
        int nVal(0);
        double dVal(0.0);

        if (ReadNums(sFileName, nVal, dVal))
        {
            std::cout << "I read back " << nVal << " and " << dVal << "\n";
        }
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...