我有一个文本文件只有一个数字。
我想打开文件并读取数字,然后我想从控制台输入一个新号码。然后将前一个号码和输入的号码一起添加。例如,已经在文件中的数字是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
任何人都可以给我一个提示吗?
答案 0 :(得分:1)
您应该使用std::ostream::seekg将ostream
设置为指向istream
设置的新位置,并使用std::ostream::seekp将istream
设置为指向ostream
已设置的新位置。
答案 1 :(得分:1)
您还可以使用带有r+,a+
标志的std::fopen来读取/写入文件。