【发布时间】:2015-07-20 19:53:12
【问题描述】:
我已经阅读了这里的一些问题,但找不到任何特定于我的问题的内容,所以我不知道我是完全错误地做错了,还是只是遗漏了一些特定的东西。
我要做的是标记一些数据并将其输入到函数中,然后根据读取的数据作为特定类型返回数据,或者如果输入验证失败则返回 bool false。我有超过 20 个 .cpp 和 20 个 .h 文件,所以我只会在此处发布相关部分,希望已经足够...
#include "utility1.h"
#include <fstream>
#include <boost/tokenizer.hpp>
using namespace std;
using namespace boost;
string buffer;
template <class T>
bool loadStaff(char* staffName) {
ifstream staffFile;
T data;
int datapos = 0;
staffFile.open(staffName, ios::in);
if (!staffFile.is_open()) {
cout << "Cant open file: " << staffName << endl;
return false;
}
while (staffFile.good()) {
getline(staffFile, buffer);
tokenizer<> tok(buffer);
for (tokenizer<>::iterator pos=tok.begin(); pos!=tok.end(); ++pos) {
data = validate(datapos, *pos);
// want to type check 'data' here
}
}
staffFile.close();
return true;
}
template <class T>
T validate(int datapos, string token) {
switch(datapos) {
case 0:
if (sizeof(token) != 2)
return false;
else
return token;
break;
}
}
那么我应该怎么做呢?铸造工作吗?还是不会,因为它可能会更改数据类型而不是检查它是什么数据类型。
对于第一次检查,我想检查 validate 是否返回 bool false 然后导致错误(稍后将更改为 try 和 catch 语句,但现在只想让它工作。
非常感谢任何帮助,在此先感谢。 :)
【问题讨论】:
-
为什么
validate是一个模板?除了 false 或 true 之外,它会返回什么? -
对不起,它还没有完成,它会根据数据位置的不同,将数据作为 int 或 string 或 double 返回。如果有任何失败,它将返回 false,但如果成功,它将根据数据位置返回字符串、int、double 等。
-
我只是把它改成了一个小例子。
标签: c++ templates types return token