【发布时间】:2018-06-13 10:32:06
【问题描述】:
我有一个模板函数makeMatrix(),代码是:
template<size_t N>
void makeMatrix(string dataFilePath, int adjcMatrix[N][N])
{
fstreamExtension fe("adj.txt", ios::in|ios::binary);
string s;
vector<int> temp;
int i = 0;
while(!fe.eof())
{
getline(fe, s);
temp = tokenizeToInt(s, ",\n")); //error: expected ';' before ')' token|
for(int j = 0; j < N; j++)
adjcMatrix[i][j] = temp[j];
i += 1;
}
}
fstreamExtension 是我创建的一个类,通过 header 包含在程序中
#include "fstreamExtension.h",其他包含的标题是iostream string 和boost/tokenizer.hpp。
tokenizeToInt()的代码:
vector<int> tokenizeToInt(string& intString, const char* seperators)
{
vector<int> intValues;
boost::char_separator<char> delims(seperators);
boost::tokenizer<boost::char_separator<char>> tokens(intString, delims);
for (const auto& t : tokens) {
intValues.push_back(atoi(t.c_str()));
}
return intValues;
}
为什么它在makeMatrix() 中导致编译错误,语法似乎正确,我没有在main() 中调用它,正在编译一些其他代码然后当我开始构建时弹出此错误。
IDE:代码块 16.01,gcc。
【问题讨论】:
-
数一下你的括号
(和)。 -
输入问题比找到错误需要更长的时间。
-
@Someprogrammerdude 从现在开始,我将避免在循环条件中使用 iostrem::eof,谢谢
标签: c++ function codeblocks boost-tokenizer