如何读取文件,然后打开一个文件?

时间:2018-05-21 04:51:04

标签: c++ fstream

我有一个文本文件只有一个数字。

我想打开文件并读取数字,然后我想从控制台输入一个新号码。然后将前一个号码和输入的号码一起添加。例如,已经在文件中的数字是5,然后我输入10,我想写15该文件并再次循环。我的代码如下:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <vector>
using namespace std;

int main()
{
    string s;
    cout << "Please enter a new number" << endl;
    while (getline(cin, s)) {
        if (s.empty()) {
            break;
        }
        fstream ff;
        string pre;
        ff.open("file.txt", ios::out | ios::in);
        if (ff.is_open()) {
            // read the pre number
            getline(ff, pre);
            cout << "Pre number: " << pre << endl;
            // Write new number
            int new_number = stoi(pre) + stoi(s);
            ff << new_number << endl;
            // Read the new number
            ff.seekg(ios::beg);
            getline(ff, pre);
            cout << "New number: " << pre << endl;


        }
        ff.close();
    }
    return 0;

问题是它无法将输入数字写入文件。始终存在文件中的数字。

Please enter a new number
12
Pre number: 78
New number: 78
12
Pre number: 78
New number: 78
12
Pre number: 78
New number: 78

任何人都可以给我一个提示吗?

2 个答案:

答案 0 :(得分:1)

您应该使用std::ostream::seekgostream设置为指向istream设置的新位置,并使用std::ostream::seekpistream设置为指向ostream已设置的新位置。

答案 1 :(得分:1)

您还可以使用带有r+,a+标志的std::fopen来读取/写入文件。