2011-07-31 9 views
-2

C++で解析する方法ヌルで終了するUnicode文字列のリストは2つのNULL文字で終了しますか?ダブルNULLで終わる文字列のリストを返します

+0

もっと具体的になることができますか?文字列のリストは2文字の "文字列"で終了しますか? Unicode?それがutf8の場合、2つのヌル文字からなる文字列はありません。 – Chris

+0

どのような文字列ですか?適切なC++文字列、または*古いskool * C文字列? –

+0

これまでに試したことを教えてください。 –

答えて

1

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); 
    } 
} 
関連する問題