1

文字列をC文字列の配列に変換する方法を見つけようとしています。たとえば、私の文字列は次のようになります。

std::string s = "This is a string."

次に、出力を次のようにしたいと思います。

array[0] = This
array[1] = is
array[2] = a
array[3] = string.
array[4] = NULL
4

3 に答える 3

3

文字列を文字列に分割しようとしています。試す:

 #include <sstream>
 #include <vector>
 #include <iostream>
 #include <string>

 std::string s = "This is a string.";

  std::vector<std::string> array;
  std::stringstream ss(s);
  std::string tmp;
  while(std::getline(ss, tmp, ' '))
  {
    array.push_back(tmp);
  }

  for(auto it = array.begin(); it != array.end(); ++it)
  {
    std::cout << (*it) << std:: endl;
  }

または、この分割を参照してください

于 2013-02-12T01:21:41.823 に答える
1

次のように Boost ライブラリ関数 'split' を使用して、区切り記号に基づいて文字列を複数の文字列に分割します。

#include <boost/algorithm/string.hpp>
std::vector<std::string> strs;
boost::split(strs, "string to split", boost::is_any_of(" "));

そして、strsベクトルを反復処理します。

この方法では、区切り文字をいくつでも指定できます。

詳しくはこちらをご覧ください: http://www.boost.org/doc/libs/1_48_0/doc/html/string_algo/usage.html#id3115768

そして、ここにはたくさんのアプローチがあります: C++ で文字列を分割しますか?

于 2013-02-12T01:19:55.257 に答える
-2

あなたの例で。

配列は文字の配列ではなく、文字列の配列です。

実は、文字列は文字の配列です。

//Let's say:
string s = "This is a string.";
//Therefore:
s[0] = T
s[1] = h
s[2] = i
s[3] = s

しかし、あなたの例に基づいて、

テキストを分割したいと思います。(区切り記号として SPACE を使用)。

String の Split 関数を使用できます。

string s = "This is a string.";
string[] words = s.Split(' ');
//Therefore:
words[0] = This
words[1] = is
words[2] = a
words[3] = string.
于 2013-02-12T01:19:47.757 に答える