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

Posted

技术标签:

【中文标题】如何将向量转换为特定类型的字符串【英文标题】:How to convert vector to string of a particular type 【发布时间】:2016-03-27 05:05:16 【问题描述】:

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

【问题讨论】:

请展示您的尝试。如果您有一些特定的问题,我们会提供帮助。 我使用 itoa() 函数将数字转换为字符串,然后在每个数字后面附加“->”,但它不起作用。任何其他方式都会受到赞赏,因为我的方式太麻烦了。 您需要发布您的代码和输出。 如果你可以使用 c++11,有一个关于 cppreference 本身的示例,使用:std::accumulate 或者你可以参考该代码来编写自己的代码。 【参考方案1】:

你可以使用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)

【讨论】:

【参考方案2】:

我是用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 包含所有带格式的输出。

输出:

【讨论】:

以上是关于如何将向量转换为特定类型的字符串的主要内容,如果未能解决你的问题,请参考以下文章

无法将向量转换为字符串

将 ArrayList 转换为特定类型的数组 [重复]

如何将包装为字符串的向量转换为熊猫数据框中的numpy数组?

如何将字符串数字的单元格数组转换为数值向量[重复]

r 闪亮错误 as.vector(x, "character") 中的错误:无法将类型“闭包”强制转换为“字符”类型的向量

文本分类,如何将文本字符串转换为向量表示