如何将向量转换为特定类型的字符串

时间:2016-03-27 05:05:17

标签: c++ string vector

我有一个形式为(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;
}

2 个答案:

答案 0 :(得分: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成为可以一般使用的模板函数。 e.g。

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

答案 1 :(得分: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包含所有格式的输出。

输出: