文字列をC文字列の配列に変換する方法を見つけようとしています。たとえば、私の文字列は次のようになります。
std::string s = "This is a string."
次に、出力を次のようにしたいと思います。
array[0] = This
array[1] = is
array[2] = a
array[3] = string.
array[4] = NULL
文字列をC文字列の配列に変換する方法を見つけようとしています。たとえば、私の文字列は次のようになります。
std::string s = "This is a string."
次に、出力を次のようにしたいと思います。
array[0] = This
array[1] = is
array[2] = a
array[3] = string.
array[4] = NULL
文字列を文字列に分割しようとしています。試す:
#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;
}
または、この分割を参照してください
次のように 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++ で文字列を分割しますか?
あなたの例で。
配列は文字の配列ではなく、文字列の配列です。
実は、文字列は文字の配列です。
//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.