为什么会这样,现实怎么这么残酷!C++代码和预期不一样,求帮助!

有没有大shen帮忙看看为什么程序最后什么也不输出?求帮助!急!!

img

源代码


/*
* -*- coding:UTF-8 -*-
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define DEVELOPING

#ifndef CPPTEMP_H
#define CPPTEMP_H

class Temp {
    public:
        /*构造函数*/
        Temp();
        Temp(string FileObject);
        /*设置缓存文件位置*/
        void SetTempFile(string FileObject);
        /*在缓存文件中创建新的储存单元*/
        int CreateAUnitInFile(string UnitName);
        /*
        * 在单元中增加新对象
        * 支持的类型有 'str','int','double','float','bool',类型
        */
        int AddNewObjectInFile(string UnitName,string type_obj);
        /*读取单元中的数据储存为列表*/
        char GetObjectsInUnitInFile(string UnitName);
        /*单独读取单元中的数据*/
        char GetObjectInUnitInFile(string UnitName);
    private:
        char file[4096];    //缓存文件
        fstream TempFile;
        bool SetTempFileFlag = false;
};

Temp::Temp() {
    // ...
}

Temp::Temp(string FileObject) {
    TempFile.open(FileObject.c_str() ,ios::app);    //打开缓存文件
    SetTempFileFlag = true;
}

void Temp::SetTempFile(string FileObject) {
    if(SetTempFileFlag == false) {
        TempFile.open(FileObject.c_str() ,ios::app);    //打开缓存文件
        SetTempFileFlag = true;
    }
}

int Temp::CreateAUnitInFile(string UnitName) {
    try {
        /*检查是否打开文件*/
        if(SetTempFileFlag == false)
            throw -2;    // 报错:文件未打开

        /*读取文件中已有的单元名称*/
        char UnitNames[40960][128];
        char LineTemp[128];
        int i;

        while(!TempFile.eof()) {
            TempFile.getline(LineTemp,128);
            #ifdef DEVELOPING
            cout<<"TempFile.getline:"<<LineTemp<<endl;
            #endif
            if(LineTemp[0] != '#') {
                int j;
                for(j=0; j<128; j++) {
                    if(LineTemp[j] == ':') {
                        i++;
                        break;
                    }
                    UnitNames[i][j] = LineTemp[j];
                }
            }
        }

#ifdef DEVELOPING
        int k;
        for(k=0; k<4096; k++)
            cout<<UnitNames[k]<<endl;
        /*写入新的单元*/
        TempFile<<UnitName<<":"<<endl;
#endif

    } catch(int i) {
        if(i == -2) {
            cout<<"未打开缓存文件!"<<endl;
        }
        return -1;
    }

    /*正常返回*/
    return 0;
}

int Temp::AddNewObjectInFile(string UnitName,string type_obj) {

    /*读取文件*/
    string data;
    TempFile>>data;

#ifdef DEVELOPING
    cout<<data;
#endif


    return 0;
}

#endif

int main(int argc,char* argv[]) {
    Temp a("1.tmp");

    a.CreateAUnitInFile("TEST");
    a.AddNewObjectInFile("TEST","str");
    return 0;
}

你有很少的输出语句,而且基本都在if里,很显然是条件判断有误

有一种可能没达到条件
因为你有输出语句在if里

谢谢,解决了哦