我试图将一些输入保存到文件中,但它似乎无法正常工作。我不知道它的文件扩展名是什么,或者其他什么,但我现在试图将其修改一小时,但它不会弹出我文件夹中的某个文件。
这是我的代码工作的方式(不发布所有内容,会太长)
这是我的功能:
void mobiltelefon::savePhoneOnFile() const
{
ofstream out;
out.open("C:\\temp\\phones.txt", ios::in);
out << this->numberofphones << endl;
for (int i = 0; i < this->numberofphones; i++) {
out << this->phones[i]->getPhonename() << endl;
out << this->phones[i]->getPrice() << endl;
}
out.close();
}
这就是我在main
中的称呼方式:
case 7:
cout << "Save the phones on file" << endl;
fb.savePhoneOnFile();
break;
我无法看到自己的错误。当我尝试保存文件时,为什么文件不显示在我的文件夹中?
答案 0 :(得分:1)
如果您尝试打开文件进行编写,则应使用ios::out
作为第二个参数
ofstream out("C:\\temp\\phones.txt", ios::out);
各种open modes是
app
在每次写入之前寻找流的结尾binary
以二进制模式打开
in
开放供阅读out
开放写作 打开时,trunc
会丢弃流的内容ate
在打开后立即寻求到流的结尾
答案 1 :(得分:1)
下面:
ofstream out;
out.open("C:\\temp\\phones.txt", ios::in);
您不希望拥有std::ios::in
标志。你为什么这样?您正在写一个文件,而不是从中读取文件。
解释: std::ofstream
对its constructor中std::ios_base::out
的flag参数进行按位或运算,并将其传递给std::basic_filebuf::open
。在该链接中查找out | in
即可获得答案。该文件需要存在才能正常打开。它不会被创造出来。
完全省略该参数,它将默认为std::ios_base::out
(这应该是你应该拥有的):
out.open("C:\\temp\\phones.txt");
你可以在施工时立刻做到这一点:
std::ofstream out("C:\\temp\\phones.txt");