使用流写入文件
我应该在名为“mydata.txt”的文件内打印(x,y)值。但出于某种原因,我收到以下错误消息:“错误:无法打开输出文件mydata.txt”我不确定程序是否应该创建文本文件,或者我应该创建该文件。我试过后者,但它仍然无法工作。这里是我的代码:使用流写入文件
#include "std_lib_facilities_5.h"
class Point{
public:
int x;
int y;
// Coordinate members x and y
Point(int nn = 0 , int mm = 0): x(nn), y(mm){}
friend ostream& operator<< (ostream &out, const Point &point);
};
ostream& operator<<(ostream& os, const Point& point){
os << point.x << " " << point.y;
return os;
}
int main()
try {
int x1, x2;
vector<Point> original_points;
for(int i = 0; i < 7; ++i) {
cout << "Please input coordinate points as (x,y): ";
cin >> x1 >> x2;
original_points.push_back(Point(x1,x2));
}
for(int i = 0; i < 7; ++i){
cout << "Original points: " << original_points[i] << endl;
}
string outputFile = "mydata.txt";
ofstream ost {"mydata.txt"};
ost.open(outputFile,ofstream::out);
if(!ost) error("can't open output file ", outputFile);
for(int i = 0; i < original_points.size(); ++i){
ost << original_points[i] << " " << original_points[i];
}
ost.close();
}
catch (exception& e) {
cerr << "error: " <<e.what() << '\n';
return 1;
}
catch (...) {
cerr << "Oops: unknown exception!\n";
return 2;
}
这里是输出,当我运行它:
Please input coordinate points as (x,y): 1 2
Please input coordinate points as (x,y): 1 1
Please input coordinate points as (x,y): 2 2
Please input coordinate points as (x,y): 3 3
Please input coordinate points as (x,y): 4 4
Please input coordinate points as (x,y): 5 5
Please input coordinate points as (x,y): 6 6
Original points: 1 2
Original points: 1 1
Original points: 2 2
Original points: 3 3
Original points: 4 4
Original points: 5 5
Original points: 6 6
error: can't open output file mydata.txt
Program ended with exit code: 1
试试这个
#include "std_lib_facilities_5.h"
class Point{
public:
int x;
int y;
// Coordinate members x and y
Point(int nn = 0 , int mm = 0): x(nn), y(mm){}
friend ostream& operator<< (ostream &out, const Point &point);
};
ostream& operator<<(ostream& os, const Point& point){
os << point.x << " " << point.y;
return os;
}
int main()
try {
int x1, x2;
vector<Point> original_points;
for(int i = 0; i < 7; ++i) {
cout << "Please input coordinate points as (x,y): ";
cin >> x1 >> x2;
original_points.push_back(Point(x1,x2));
}
for(int i = 0; i < 7; ++i){
cout << "Original points: " << original_points[i] << endl;
}
ofstream ost;
ost.open("mydata.txt");
if(!ost) error("can't open output file ", "mydata.txt");
for(int i = 0; i < original_points.size(); ++i){
ost << original_points[i] << " " << original_points[i];
}
ost.close();
}
catch (exception& e) {
cerr << "error: " <<e.what() << '\n';
return 1;
}
catch (...) {
cerr << "Oops: unknown exception!\n";
return 2;
}
ofstream ost {"mydata.txt"};
打开该文件。
然后,您尝试在下一行中再次打开它失败,因为它已经打开。
删除第二行。
删除行ost.close();
当你在它的时候 - 析构函数会在你的时间关闭它。
它还没有创建文件。我应该把它放在同一个目录 –
@PapesTraore你知道吗?因为你的程序打印出错误或者你找不到它?该文件应该在程序的*工作目录*中创建,并且如果您使用的是通常不在源代码所在的IDE。 – molbdnilo
我找不到它,你的意思是.cpp文件?我使用的是Xcode,但是我的作业里面有一个文件夹。 –
是的,我做到了。我创建了一个名为“mydata.txt”的文件,并将它放在同一个文件夹中 –
@ scohe001除非另有指定,否则打开输出文件流将创建该文件。 – molbdnilo