2016-04-05 10 views
-2

配列に文字列ストア私は文字列変数を持って

文字列は=「これが私の文字列」私は配列

    空白で区切られたすべての単語を格納したい

  • array [0] = "this";
  • array [1] = "is";
  • array [2] = "my";
  • array [3] = "string";
+5

[C++で文字列をトークン化するにはどうすればいいですか?](http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-string-in-c) – Pierre

+0

おそらくこの投稿便利なことができます:[C++の文字列を分割しますか?](http://stackoverflow.com/a/236803/6032132) – tetouani63

+0

文字列の先頭のスペースが意図的であることを確認できますか? –

答えて

0

まずあなたのような "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; 
    } 
0

は、このケースでは、あなたがあなたのケースのための文字列の区切りコンセプト

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; 
    } 

我々はすべてのノーを追加することができます。デリミタの二重引用符で囲みます。それは文字列(デリミタ)検索のようなものです。

関連する問題