假设str
是一个流,因为你所有的变量看起来都是字符串,你可以简单地使用std::getline
with'|'
作为分隔符。
std::getline(str, location, '|');
std::getline(str, name, '|');
std::getline(str, phno, '|');
std::getline(str, tok, '|');
您甚至可以将其包装到一个可变参数模板函数中,该函数接受您想要读取的所有参数。
void readParams(std::istream& stream, char delim)
{
}
template<typename ... Tail>
void readParams(std::istream& stream, char delim, std::string& string, Tail& ... t)
{
std::getline(stream, string, delim);
readParams(stream, delim, t ...);
}
然后可以这样调用此函数:
readParams(str, '|', location, name, phno, tok);
如果您被限制使用没有可变参数模板的编译器,您仍然可以为所需的参数数量添加一些重载,并在稍后阶段将它们替换为真正的可变参数模板。