首页 > 解决方案 > 如何用字符分隔符连接字符串元素的向量?

问题描述

我的主要功能应该是这样的。

int main(int argc, char **argv) {
vector<string> v;
string s;
v.push_back(string("fee"));
v.push_back(string("fi"));
v.push_back(string("foe"));
v.push_back(string("fum"));
join(v, '/', s);
cout << s << '\n';
return 0;
}

我的输出应该是:fee/fi/foe/fum

我做了:

#include <vector> 
#include <iostream> 
#include <cstdlib>  


using namespace std;

void join(vector<string> v, char c , string s){

      for (int i=0; i<v.size(); i++)
       cout << v[i];
}

int main(int argc, char **argv) {   

vector<string> v;
string s;

v.push_back(string("fee"));
v.push_back(string("fi"));
v.push_back(string("foe"));
v.push_back(string("fum"));

join(v,'/',s);
cout<<s<<'\n';

return 0;

}

我不能打印'/'这个字符。我能怎么做?如何将 char 从 main 函数发送到 join 函数?

cout<

标签: c++functionvector

解决方案


首先:如何在函数中更改字符串

其次:您需要使用 c 参数并将其连接到您的字符串。

第三:在最后一次迭代的早期转义,以免在最后添加额外的“/”。

这里有一个解决方案:

#include <vector> 
#include <iostream> 
#include <cstdlib>  

using namespace std;

void join(vector<string> v, char `c` , string & s){
    for (unsigned int i=0; i<v.size(); i++) {
        s += v[i];
        if (i >= (v.size() - 1)) {
            break; // escaping in the last iteration
        }
        s += c; // concatenating string
    }
}

int main(int argc, char **argv) {   
    vector<string> v;
    string s;

    v.push_back(string("fee"));
    v.push_back(string("fi"));
    v.push_back(string("foe"));
    v.push_back(string("fum"));

    join(v,'/',s);
    cout<<s<<'\n';

    return 0;
}

老实说,我讨厌更改传递给函数/方法的变量。更简单、更易读的是返回结果。


推荐阅读