【问题标题】: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 或者你可以参考该代码来编写自己的代码。

标签: c++ string vector


【解决方案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 包含所有带格式的输出。

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-07
      • 2021-09-19
      • 2021-09-09
      • 2019-10-26
      • 1970-01-01
      • 2022-11-25
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多