我有以下代码将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.version
#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;
}
答案 0 :(得分:4)
我怀疑问题是这样的:
ofstream out1("C\\Users\\datuashvili\\Desktop\\vector.txt");
应该是;
ofstream out1("C:\\Users\\datuashvili\\Desktop\\vector.txt");
^^^^^
您可以通过在调试器下运行,观察程序的退出状态或向程序添加print语句来自行找到它。
在调试器中,您可以逐步执行代码并发现您点击“exit(1)”。或者,您可以在cout << "Can't open file!\n";
语句中添加if
之类的内容。
答案 1 :(得分:1)
尝试从一个更简单的工作版本开始,然后逐个更改:这个例子只是在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:\ ...”中缺少“:”),你应该只在一个地方打开文件。
答案 2 :(得分:0)
你仍然打开两次流,在第二次尝试时可能会失败,因为第一次调用会锁定此资源。
尝试这样的事情:
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 );
...
}