我正在尝试编写一些替代矢量中某个数字的代码。因此,如果向量包含类似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;
}
答案 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中的最后一个参数有一个我选择为逗号的分隔符。当然,您可以将空字符串传递给您要求的字符串。