繁体   English   中英

写入档案无法正常运作

[英]Writing file doesn't work properly

我正在尝试将我的一些输入保存到文件中,但似乎不起作用。 我不知道它的文件扩展名是什么,但是我已经尝试修改了一个小时,但是它没有在我的文件夹中弹出某些文件。

这就是我的代码的工作方式(不发布所有内容,太长了)

这是我的功能:

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;

我看不到我的错误。 尝试保存文件时,为什么文件没有显示在我的文件夹中?

如果要打开文件进行写入,则应使用ios::out作为第二个参数

ofstream out("C:\\temp\\phones.txt", ios::out);

各种打开模式

app在每次写入之前尝试流的结尾
binary以二进制模式打开
in开放阅读
out对写开放
trunc在打开时丢弃流的内容
ate马上寻求流结束后开放

这里:

ofstream out;
out.open("C:\\temp\\phones.txt", ios::in);

您不想有std::ios::in标志。 你怎么会 您正在写入文件,而不是从文件读取。

解释: std::ofstream对标志参数与其构造函数中的 std::ios_base::out进行“或”运算,并将其传递给std::basic_filebuf::open 查找out | in out | in该链接中,您便找到了答案。 该文件将需要存在才能正确打开。 它不会被创建。

只需完全省略该参数,它将默认为std::ios_base::out (这是您应该拥有的):

out.open("C:\\temp\\phones.txt");

您最好在构造时立即执行:

std::ofstream out("C:\\temp\\phones.txt");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM