C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのコンマ区切りのstd::stringの解析


このプログラムでは、C++でコンマ区切りの文字列を解析する方法を説明します。いくつかのテキストが存在し、それらがコンマで区切られている場所に文字列を配置します。このプログラムを実行すると、それらの文字列がベクトル型オブジェクトに分割されます。

それらを分割するには、getline()関数を使用しています。この関数の基本的な構文は次のとおりです。

getline (input_stream, string, delim)

この関数は、入力ストリームから文字列または行を読み取るために使用されます。

Input: Some strings "ABC,XYZ,Hello,World,25,C++"
Output: Separated string ABC XYZ Hello World 25 C++

アルゴリズム

Step 1: Create stream from given string
Step 2: While the stream is not completed
Step 2.1: Take item before comma
Step 2.2: Add item into a vector
Step 3: Return the vector

サンプルコード

#include<iostream>
#include<vector>
#include<sstream>
using namespace std;
main() {
   string my_str = "ABC,XYZ,Hello,World,25,C++";
   vector<string> result;
   stringstream s_stream(my_str); //create string stream from the string
   while(s_stream.good()) {
      string substr;
      getline(s_stream, substr, ','); //get first string delimited by comma
      result.push_back(substr);
   }
   for(int i = 0; i<result.size(); i++) {    //print all splitted strings
      cout << result.at(i) << endl;
   }
}

出力

ABC
XYZ
Hello
World
25
C++

  1. std ::stringをC++でconstchar*またはchar*に変換する方法は?

    文字列クラスのc_str()メソッドを使用して、文字列の内容を含むconstchar*を取得できます。 例 #include<iostream> using namespace std; int main() {    string x("hello");    const char* ccx = x.c_str();    cout << ccx; } 出力 これにより、出力が得られます- hello 文字*を取得するには、コピー機能を使用します。 例 #include<ios

  2. C ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string