如何解析以空格终止的Unicode字符串的c ++列表,其中列表以两个NULL字符终止?
答案 0 :(得分:2)
Raymond Chen's blog上有一个小例子(也许不足为奇,这是Google首次发现“双空终止字符串”):
重新解释一个双重空终止的字符串 带有空字符串的字符串列表作为终结符进行写入 代码以完全通过双空终止字符串 简单的:
> for (LPTSTR pszz = pszzStart; *pszz; pszz += lstrlen(pszz) + 1) { ...
> do something with pszz ... }
LPTSTR和lstrlen是包装器,它们会根据是否设置_UNICODE而改变。
答案 1 :(得分:1)
您只需构建一个字符串列表,并在其中一个为空时中止:
std::vector<std::string> result;
result.push_back( std::string() );
while (std::cin) {
char c = std::cin.get();
if ( c == 0 ) {
if ( result.back().empty() ) { result.pop_back(); return; }
else result.push_back(std::string()); }
} else {
result.back().push_back(c);
}
}