将fstream传递给函数

时间:2013-02-05 21:04:22

标签: c++

我正在尝试将fstream传递给函数,然后将结构写入文件。我知道你必须通过引用传递流,但是在运行时没有任何内容写入文件。这是我到目前为止所拥有的:

struct Record
{
    char name     [16];
    char phoneNum [16];
    float balance;
};

void newRec (fstream &);

int main()
{
    fstream ref;
    ref.open("prog2.dat", ios::in | ios::out | ios::app | ios::binary);
    if(!ref.fail() )
    {
        int choice = menu(ref);
        system("CLS");

        while(choice != 6)
        {
            choice = menu(ref);
            system("CLS");
        }
    }
    else
        cout << "Error opening file. " << endl;

    return 0;
}


void newRec (fstream& ref)
{   
    Record rec;

    cout << "Enter customer name: ";
    cin.ignore();
    cin.getline(rec.name, sizeof(rec.name));
    cout << "Enter customer phone number: ";
    cin >> rec.phoneNum;
    cout << "Enter beginning account balance: ";
    cin >> rec.balance;

    ref.write(reinterpret_cast<char*>(&rec), sizeof(rec));
} 

rec只是一个3成员结构。任何想法为什么这不起作用?我感谢任何帮助。 注意:我必须使用.write()而不是&lt;&lt;根据我的任务

2 个答案:

答案 0 :(得分:1)

如果您使用的是Visual Studio:也许您正在查找错误的目录,则在调试时将在Projects\Project_Name\Project_Name中创建该文件,而不是Projects\Project_Name\Debug

答案 1 :(得分:0)

Streams的工作方式与coutcin类似。使用

可能会更好
ref << rec.name << "," << rec.phoneNum << "," << rec.balance << endl;