【问题标题】:How to join vector of string elements with char separator? [closed]如何用字符分隔符连接字符串元素的向量? [关闭]
【发布时间】:2020-07-29 18:01:11
【问题描述】:

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

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 相关的代码在哪里?此外,将“s”传递给join() 的目的是什么,而它也完全没有任何作用?您需要编写 C++ 程序需要执行的所有代码,C++ 不会只为您完成。您的 join() 不会对它获得的参数做任何事情,也不会对第三个参数做任何事情,所以它们什么也没有发生。很明显第三个参数必须是引用,所以你也需要修复它。如需更多帮助,请参阅您的 C++ 教科书。
  • 我相信其意图是 join() 不使用 cout。所以你可能比你想象的更远离完成你的任务。愿意后退几步,尝试不同的方法。

标签: c++ function vector


【解决方案1】:

首先:How to change string in function

其次:您需要使用 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;
}

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

【讨论】:

  • 谢谢,这对我很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 2015-09-26
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多