配列に文字列ストア私は文字列変数を持って
文字列は=「これが私の文字列」私は配列
-
に
空白で区切られたすべての単語を格納したい
- array [0] = "this";
- array [1] = "is";
- array [2] = "my";
- array [3] = "string";
配列に文字列ストア私は文字列変数を持って
文字列は=「これが私の文字列」私は配列
あなたはstd::istringstream
とstd::istream_iterator
とstd::back_inserter
でstd::copy
を使用することができます。
vector<string> v;
istringstream ss(" this is my string");
copy(istream_iterator<string>(ss), istream_iterator<string>(), back_inserter(v));
まずあなたのような "sstream提供" クラスを含める必要があります:
#include <sstream>
次にコードの下に使用します。
string str= "this is my string"
int len = str.length();
string arr[len];
int i = 0;
stringstream ssin(str);
while (ssin.good() && i < len){
ssin >> arr[i];
++i;
}
for(i = 0; i < len; i++){
cout << arr[i] << endl;
}
は、このケースでは、あなたがあなたのケースのための文字列の区切りコンセプト
strtok(const char * str, int delimiter);
を使用することができ、区切り文字は「空白」です。
プログラム:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] ="This a sample string";
char * output_after_delimiter_applied;
char *out_arr[4];
int i=0;
printf("The original string is %s\n", str);
output_after_delimiter_applied = strtok (str," ");
while (output_after_delimiter_applied != NULL)
{
out_arr[i] = output_after_delimiter_applied;
output_after_delimiter_applied = strtok (NULL, " ");
// NULL parameter is for continuing the search
// delimiter is "white space".
i++;
}
for(i=0; i < 4 ; i++)
printf("%s\n", out_arr[i]);
return 0;
}
我々はすべてのノーを追加することができます。デリミタの二重引用符で囲みます。それは文字列(デリミタ)検索のようなものです。
[C++で文字列をトークン化するにはどうすればいいですか?](http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-string-in-c) – Pierre
おそらくこの投稿便利なことができます:[C++の文字列を分割しますか?](http://stackoverflow.com/a/236803/6032132) – tetouani63
文字列の先頭のスペースが意図的であることを確認できますか? –