我试图创建一个字符串分割模板,如下所示,我得到错误。错误C2893:无法专门化函数模板C++
struct splitX
{
enum empties_t { empties_ok, no_empties };
};
template <typename Container>
Container& split(
Container& result,
const typename Container::value_type& s,
typename Container::value_type::value_type delimiter,
splitX::empties_t empties = splitX::empties_ok)
{
result.clear();
std::istringstream ss(s);
while (!ss.eof())
{
typename Container::value_type field;
getline(ss, field, delimiter);
if ((empties == split::no_empties) && field.empty()) continue;
result.push_back(field);
}
return result;
}
这种失败,从标题的错误,当我试图用向量类象下面这样使用它:
std::getline(myfile,line);
std::vector<std::string> fields;
split(fields,line,' ');
// Test split function
std::cout << line << std::endl;
for(int i = 0; i < fields.size();i++)
std::cout << fields[i];
不要忘了错别字! – Forgottn
这不是假装成为模板神,我想。如果一种编程语言在这种情况下可以有用(避免代码重复),为什么不使用它? –
然后你可以使用第一个代码示例。请参阅我已添加的一些修补程序。 – Forgottn