将vector的内容写入文件c ++

时间:2013-11-18 15:53:52

标签: c++ file-io

我试图将矢量内容写入文件。为此,我写了一段代码,如:

int main()
{
    ofstream outputfile("test.txt");
    vector<int>temp;
    temp.push_back(1);
    temp.push_back(2);
    temp.push_back(3);
    for(int i=0;i<temp.size();i++)
        outputfile<<temp[i]<<"\n";
}

当我写这篇文章时,我可以轻松地做我想做的事。文件的内容是:

1 2 3

然而,当我想把我的矢量写入反向文件时(如下)。我什么都没得到。只是空文件。有没有人帮我?提前谢谢。

for(int i=temp.size()-1;i>=0;i--)
    outputfile<<temp[i]<<"\n";

4 个答案:

答案 0 :(得分:7)

您可以使用

std::copy(temp.rbegin(), temp.rend(),
          std::ostream_iterator<int>(outputfile, "\n"));

这段代码:

for(int i=temp.size()-1;i>=0;i--)
    outputfile<<temp[i]<<"\n";

使用vs12在我的窗口上正常工作。

答案 1 :(得分:4)

您可以在一行中完成所有操作:

std::copy(temp.rbegin(), temp.rend(), std::ostream_iterator<int>(outputFile, "\n"));

答案 2 :(得分:4)

使用反向迭代器:

for (std::vector<int>::reverse_iterator it = myvector.rbegin(); it != myvector.rend(); ++it)

或在您的代码中,从size() - 1开始for循环:

for(int i=temp.size()-1;i>=0;i--) 

而不是

for(int i=temp.size();i>=0;i--)

答案 3 :(得分:0)

std::copy(head_buff.rbegin(), head_buff.rend(),
          std::ostream_iterator<std::string>(data_pack, "\n"));

但使用#include<fstram>#include<iterator> #include<osstream> 第二种方法是遍历整个向量,然后将内容复制到字符串中 然后将字符串写入ofstream 即

std::string somthing;
for(std::vector<std::string>::const_iterator i = temp.begin();i!=temp.end(); ++i)
 {
     something+=*i;
 }

然后将字符串(某物)写入ofstream即

std::ofstram output;
output.open("test.txt",std::ios_base::trunc)
if(output.fail())
  std::cerr<<"unable to open the file"std::endl;
output << something;
//after writing close file
 output.close();