모든 변수가 문자열로 표시되기 때문에 str
을 스트림이라고 가정하면 std::getline
과 '|'
을 구분 기호로 간단하게 사용할 수 있습니다.
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);
, 당신은 여전히 당신이 원하는 인수의 수에 대한 몇 가지 오버로드를 추가 할 수 있습니다 , 나중에 그들을 진정한 variadic 템플릿으로 대체하십시오.
7 초 그것을 패배 ... : P 내가 때로는 토큰 공백, 쉼표, 같은 토큰을 취 내 모든 다른 파일에 대한 함수를 만들고 싶어 – maditya
,. 나는 이미 내 파일 구문 분석을 위해 getline 함수를 사용했지만 이제는 하나의 함수로 바인드해야한다. – rashi
@rashi 다가오고 있습니다 – Agentlien