C で stringstream を使用してカンマ区切りの文字列を効率的に区切るにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-23 07:18:16
オリジナル
232 人が閲覧しました

How Can I Efficiently Separate Comma-Delimited Strings in C   Using stringstream?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート