c++ - 如何用字符分隔符连接字符串元素的向量?
问题描述
我的主要功能应该是这样的。
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 参数并将其连接到您的字符串。
第三:在最后一次迭代的早期转义,以免在最后添加额外的“/”。
这里有一个解决方案:
#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;
}
老实说,我讨厌更改传递给函数/方法的变量。更简单、更易读的是返回结果。
推荐阅读
- c# - 合作伙伴中心 SDK 客户时区
- php - 基于另一个数组保留二维数组的每一行中的元素
- gradle - Gradle:无法获取未知属性“目标”
- oracle - Oracle-我们如何知道更新命令没有更新字段
- python - 将 TextEdit 文件附加到 Python
- javascript - 我们如何忽略 JavaScript 中的一些空格?
- xslt - XPath 通过命名空间从同级中获取价值
- sql - 来自同一表列的 SQL 连接
- sql-server - PB 选择 TODAY() 到 :var From DUMMY
- google-bigquery - Google BigQuery:固定项目/数据集