2016-03-27 9 views
2

私は、(1,2,3)という形式のC++のベクトルを持っています。私はこのベクトルを文字列 "1-> 2-> 3"にします。誰も私はどのようにベクトルをこの文字列に変換できますか?ベクトルを特定のタイプの文字列に変換する方法

私はこのコードを試しましたが、私はitoa()メソッドまたはto_strを使用できないという制約があります。

string stringify(vector<int> v) 
{ 
    string s = ""; 
    for(int i=0;i<v.size()-1;i++){ 
     s = itoa(v[i]); 
     s = s + "->" 
    } 
    s = s+v[i]; 
    cout<<s; 
    return s; 
} 
+1

あなたが試したものをご提示ください。そして、特定の問題がある場合には、私たちはお手伝いします。 – songyuanyao

+0

itoa()関数を使って数字を文字列に変換し、それぞれの後ろに " - >"を追加しましたが、機能しません。私の方法はあまりにも面倒を持っているので、他の方法で評価されます。 –

+1

コードを投稿して出力してください。 – jrsmolley

答えて

4

あなたはstd::stringstreamを使用することができます。

string stringify(const vector<int>& v) 
{ 
    stringstream ss; 
    for (size_t i = 0; i < v.size(); i++) { 
     if (i != 0) ss << "->"; 
     ss << v[i]; 
    } 

    return ss.str(); 
} 

LIVE

BTW1を:あなたはvectorのコピーを避けるために、参照渡しに値渡しのパラメータタイプを変更する場合があります。
BTW2:stringifyを一般的に使用できるテンプレート関数にすることができます。例えば

template <typename T> 
string stringify(const vector<T>& v) 
1

私はそれがあなたにとって有用であれば見て、Cでそれをやった:

#include <stdio.h> 
    #include <stdlib.h> 
    #define SIZE 2 

    void stringify(char*); 

    int main() 
    { 
     char v = {1,2,3}; 
     stringify(v); 

     printf("\n\n"); 
     getchar(); 
     return 0; 
    } 

    void stringify(char v[]) 
    { 
     char s[20]=" "; 
     char aux[20] = ""; 

     for(int i=0;i <= SIZE;i++) 
     { 
      if(i < SIZE) 
       sprintf(s, "v[%d] -> ", &v[i]); 
      else 
       sprintf(s, "v[%d]", &v[i]); 

      printf("", strcat(aux,s)); 


     } 
     printf("\n%s", aux); 
    } 

今配列AUXフォーマットですべての出力が含まれています。

出力:

関連する問題