如何替换向量中的特定元素?

时间:2013-10-28 22:18:57

标签: c++ vector

我正在尝试编写一些替代矢量中某个数字的代码。因此,如果向量包含类似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;
}

2 个答案:

答案 0 :(得分:0)

尝试使用fileInfo [count] = newIn;

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

答案 1 :(得分: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, ","));

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