解析以双NULL结尾的字符串列表

时间:2011-07-31 17:32:18

标签: c++ string null

如何解析以空格终止的Unicode字符串的c ++列表,其中列表以两个NULL字符终止?

2 个答案:

答案 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);
    }
}