注册 登录
编程论坛 C++教室

为什么这个程序不能保存名字啊?

a382793896 发布于 2012-02-16 17:48, 420 次点击
程序代码:
#include <iostream>
#include <string>
#include <fstream>
//定义一个类
class File
{
public:
    std::string neirong;   //
    std::string speaker;   //
    std::ofstream fileoutput;  //定义一个文件型变量,
    std::ifstream outfile;   //定义一个文件型变量,
   
    File();   //结构器
    ~File();//析构器
    void infile();//输入的内容保存到变量中。
    void inspeakerfile();//作者保存到变量中。
    bool write();//将内容和作者保存到文件中。
    void read();//读取文件内容。

};
void File::read()
{
    outfile.open("1.txt");
    if(outfile != 0)
    {
    char x;
    while (outfile >> x)
    {
        std::cout<<x;
    }
    }
}
File::File()
{
    fileoutput.open("1.txt",std::ios::app);
}
File::~File()
{
fileoutput.close();
}
void File::infile()
{
    std::getline(std::cin,neirong);
   
}
void File::inspeakerfile()
{
    std::getline(std::cin,speaker);
}
bool File::write()
{
    if(fileoutput.is_open())
    {
    fileoutput<<neirong<<"|"<<speaker<<"\n";
    return true;
    }
    else
    {
    return false;
    }

}
void warning()
{
std::cout<<"\n1写入信息\n2读取文件信息\n3退出!程序\n";
}
int main()
{
    int a;
    File readwirtefile;
    for(;;)
    {
    warning();

   
    std::cin>>a;

    switch(a)
    {
    case 1:
    std::cout<<"请写一句名言!:\n";
    readwirtefile.infile();
   
    std::cout<<"请写名言的作者!:\n";
    readwirtefile.inspeakerfile();
   
    if(readwirtefile.write())
    {
        std::cout<<"成功写入文件!\n";
   

    }
    else
    {
        std::cout<<"写入文件失败!\n";
   
    }
   
    break;
    case 2:
        readwirtefile.read();
        break;
    case 3:
        exit(1);
    }

    }
return 0;
}


[ 本帖最后由 a382793896 于 2012-2-20 22:56 编辑 ]
1 回复
#2
pangding2012-02-17 11:01
哪保存名字不行呀?你注释你的代码,把有疑惑的地方标出来。
另外楼主应该再稍微改进一下缩进的格式,也许是你复制到论坛的时候乱掉的,但很影响我们阅读,希望可以调整一下。

还有,什么保存名字之类的,没太看懂问题。

[ 本帖最后由 pangding 于 2012-2-17 11:03 编辑 ]
1