将vector的内容复制到文件中

copy contents of vector into file

本文关键字:文件 复制 vector      更新时间:2023-10-16

我有以下代码复制vector的内容到文件

#include<iterator>
#include<algorithm>
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
void dump(vector<int>& v){
    ofstream out1("C\Users\datuashvili\Desktop\vector.txt");
    if(!out1){
        exit(1);
    }
    copy(v.begin(),v.end(),ostream_iterator<int>(out1," "));
}
int main(){
    ofstream out1("C\Users\datuashvili\Desktop\vector.txt");
    vector<int>v;
    v.push_back(100);
    v.push_back(200);
    v.push_back(300);
    v.push_back(500);
    v.push_back(1000);
    dump(v);
    return 0;
}

但是当我简单地运行这段代码时,,没有写入文件,这是在桌面上创建的,为什么?你能告诉我这个代码有什么问题吗?编辑:这里编辑的代码也不工作,不打开文件,也不写,两个版本

1.版本
#include<iterator>
#include<algorithm>
#include<fstream>
#include<ostream>
#include<iostream>
#include<vector>
using namespace std;
void dump( vector<int>& v){
    ofstream out1(("C:\vector.txt"));
    if(!out1){
        exit(1);
    }
    copy(v.begin(),v.end(),ostream_iterator<int>(out1," "));
    out1.close();
}
int main(){
    vector<int>v;
    v.push_back(100);
    v.push_back(200);
    v.push_back(300);
    v.push_back(500);
    v.push_back(1000);
    dump(v);
    return 0;
}

2。

#include<iostream>
#include<fstream>
#include<ostream>   
#include<vector>
#include<algorithm>
#include<iterator>
using namespace std;
template<typename T>
void writeTo(const std::string& filepath,const  vector<T>& data)
{
 ofstream filestream("C:\vector.txt");
 std::copy(data.begin(),data.end(),std::ostream_iterator<T>( filestream," "));
 filestream.close();
}
int main(){
   vector<int>test;
   test.push_back(1);
   writeTo<int>("C:\vector.txt", test);
   return 0;
}

我怀疑问题是这样的:

ofstream out1("C\Users\datuashvili\Desktop\vector.txt");

;

ofstream out1("C:\Users\datuashvili\Desktop\vector.txt");
               ^^^^^

你可以通过在调试器下运行,观察程序的退出状态,或者在程序中添加print语句来自己发现这个问题。

在调试器中,您将逐步检查代码并发现您按了"exit(1)"。或者,您可以在if语句中添加类似cout << "Can't open file!n";的内容。

尝试从一个更简单的工作版本开始,然后逐一更改:本例将只在c:/

中创建文件
#include <fstream>
#include <vector>
using namespace std;
void dump( const vector<int> & v)
{
    ofstream out1("C:\vector.txt");
    if(!out1)
    {
        exit(1);
    }
    copy(v.begin(),v.end(),ostream_iterator<int>(out1," "));
}
int main()
{
    vector<int>v;
    v.push_back(100);
    v.push_back(200);
    v.push_back(300);
    v.push_back(500);
    v.push_back(1000);
    dump(v);
    return 0;
}

正如其他人提到的,您的路径是错误的(至少,在"c:…"中缺少":"),您应该只在一个地方打开文件。

就像Rob评论的那样,你的道路仍然是错误的。您漏掉了磁盘标识符后面的冒号。您的路径需要像这样:"c:...."

你仍然打开流两次,第二次尝试可能会失败,因为这个资源被第一次调用锁定了。

试试这样写:

template< typename T >
void writeToFile( const std::string& filePath, const std::vector< T >& data )
{
  std::ofstream fileStream( filePath );
  std::copy(data.begin(), data.end(), std::ostream_iterator< T >(fileStream, " ") );
  fileStream.close();
}
int main()
{
  ...
  vector< int > test;
  test.push_back(1);
  writeToFile<int>( "c:\test.txt", test );
  ...
}