如何将向量转换为特定类型的字符串
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 包含所有带格式的输出。
输出:
【讨论】:
以上是关于如何将向量转换为特定类型的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何将包装为字符串的向量转换为熊猫数据框中的numpy数组?
r 闪亮错误 as.vector(x, "character") 中的错误:无法将类型“闭包”强制转换为“字符”类型的向量