0

我正在尝试编写一些代码来替换向量中的某个数字。因此,如果向量包含类似 12345 的内容,并且有人决定用 0 替换或更改元素 [4],它将写入文件 12340。

到目前为止,使用下面的代码,我最终只替换了文件中的第一个数字。并使用

theFile << newIn.at(count) << endl;

代替

theFile << *i << endl;

似乎不起作用。

如何修改特定的向量元素,然后将整个向量正确写入文件?

//change/replace/delete
cout <<  "What would you like to replace it with?" << endl;
cin >> newIn;
fileInfo.at(count) = newIn;

//open
fstream theFile("numbers.txt");

//write changes
ofstream thefile;
for(vector<char>::const_iterator i = fileInfo.begin(); i != fileInfo.end(); i++)
{
    theFile << *i << endl;
}
4

2 回答 2

0

尝试使用 fileInfo[count] = newIn;

如果这不起作用,作为健全性检查,您应该首先仔细检查您是否正确读取了向量,并且除了写入输出流之外,还使用 ​​cout 打印向量的状态。

于 2013-10-28T22:30:19.173 回答
0

使用 STL 中的复制算法:

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;
string fileName("resources\\data.txt");
ofstream outputFile(fileName);

vector<int> v = { 0, 1, 2, 3, 4 };
v[3] = 9;

copy(v.begin(), v.end(), ostream_iterator<int>(outputFile, ","));

副本中的最后一个参数有一个分隔符,我选择它作为逗号。您当然可以将空字符串传递给您所要求的内容。

于 2013-10-28T23:04:23.720 回答