有没有大shen帮忙看看为什么程序最后什么也不输出?求帮助!急!!
源代码
/*
* -*- 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里
谢谢,解决了哦