我有一个形式为(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;
}
答案 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();
}
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包含所有格式的输出。
输出: