Stringstream を使用したカンマ区切り文字列の分離
C では、 stringstream は文字列を操作し、データを抽出するための強力なツールです。スペース区切りの文字列は簡単に区切ることができますが、カンマ区切りの文字列は少し変更したアプローチが必要です。
元のアプローチ:
次のコードは、stringstream を使用した元のアプローチを示しています。文字列を区切るにはspace:
std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%s\n", token.c_str()); }
Output:
abc def,ghi
このアプローチでは、>> がコンマ区切りのトークンを区切ることができません。 stringstream の演算子は、空白文字を区切り文字として想定します。
修正されたアプローチ:
カンマ区切りの文字列を区切るには、stringstream が提供する getline() 関数を利用できます。この関数を使用すると、指定された区切り文字に到達するまで文字列を読み取ることができます。変更されたコードは次のとおりです。
#include <iostream> #include <sstream> std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; }
出力:
abc def ghi
説明:
getline() 関数入力文字列 ss を読み取り、最初に出現する文字までのトークンを抽出します。区切り文字 (ここではカンマです)。次に、抽出されたトークンをトークン文字列に割り当て、成功した場合は true を返します。 getline() を繰り返し呼び出すことで、入力文字列内のカンマ区切りのトークンを反復処理できます。
このアプローチにより、カンマ区切りの文字列が効果的に個々のトークンに分離され、プログラム内でさらなる処理や操作が可能になります。
以上がC で stringstream を使用してカンマ区切りの文字列を効率的に区切るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。