我正在尝试使用c ++在文件中添加数据。但我被困了可以任何人帮我调试这个

时间:2014-05-24 13:15:15

标签: c++ file

我正在尝试使用C ++的fstream函数在文件中添加数据,但是我的一个字段调用名称没有显示在文件内部以及我的缓冲区中没有显示的是代码,你能不能请给我一些调试这类问题的技巧。我一般都无法调试这类问题。

#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
class student
{
    char usn[3];
    char name[10];
    char age[5];
    char buf[25];
    public:
    void pack();
    void unpack();
    void searh();
    void add();
    void dele();
}s;
void student::pack()
{
    strcpy(buf,usn);
    strcat(buf,"|");
    strcat(buf,name);
    strcat(buf,"|");
    strcat(buf,age);
    for (int i=strlen(buf);i<20;i++)
    strcat(buf,"#");
}
void student::unpack()
{
    strcpy(usn,strtok(buf,"|"));
    strcpy(name,strtok(NULL,"|"));
    strcpy(age,strtok(NULL,"#"));
}
void student::add()
{
    cout << " give student's details \n";
    cout << "name : \n";
    cin >> name;
    cout << "usn : \n";
    cin >> usn;
    cout << "age : \n";
    cin >> age;
    pack();
    fstream fout;
    fout.open("student.txt",ios::in);
    cout << buf;
    fout << buf;
}
int main()
{
    cout << "main";
    s.add();
}

2 个答案:

答案 0 :(得分:1)

您已在阅读模式下打开文件:

fstream fout;
fout.open("student.txt",ios::in);

所以你做不到:

fout << buf;

而是用:

打开它
fout.open( "student.txt", ios::in | ios::out);

这也是fstream的默认设置,因此您可以将其缩写为:

fout.open( "student.txt");

最好不要将整个标准命名空间纳入范围。

答案 1 :(得分:0)

看起来你正在打开你似乎想要在输入模式下写入的文件 - ios :: in。

另外,我会在buf中留出更多空间。