我想在第n个索引中的字符串中插入一个字符。 基本上只格式化从1000到1,000或100,0的数字 到目前为止,这就是我所拥有的。 尝试了一些变化,但这是我得到的最接近的变化。 我想念什么? 这是使用功能的jsFiddle的链接: https ://jsfiddle.net/d ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我如何可以插入一个char ACTER成字符串 1个字符后到底是什么?
我需要插入'|' 在每个其他角色之后进入字符串。
换句话说(C ++): "Tokens all around!"
变成: "T|o|k|e|n|s| |a|l|l| |a|r|o|u|n|d|!"
(不,那不是一个数组)
谢谢
std::string tokenize(const std::string& s) {
if (!s.size()) {
return "";
}
std::stringstream ss;
ss << s[0];
for (int i = 1; i < s.size(); i++) {
ss << '|' << s[i];
}
return ss.str();
}
我想我会使用标准算法和迭代器:
std::string add_seps(std::string const &input, std::string sep="|") {
std::ostringstream os;
std::copy(input.begin(), input.end(), std::ostream_iterator<char>(os, sep));
return os.str();
}
就目前而言,这会在输入的最后一个字符后面添加一个分隔符。 如果你只想在字符之间使用它们,你可以使用infix_ostream_iterator
。
您可以使用
string& insert (size_t pos, const string& str);
你必须循环遍历字符串,每次都插入一个字符。
for (int i = 1; i < str.size(); i++) {
str << str.insert(i, '|');
i++;
}
这是我的C ++ 11示例(使用gcc 4.7):
#include <string>
#include <iostream>
template<const unsigned num, const char separator>
void separate(std::string & input)
{
for ( auto it = input.begin(); (num+1) <= std::distance(it, input.end()); ++it )
{
std::advance(it,num);
it = input.insert(it,separator);
}
}
int main(void)
{
std::string input{"aaffbb3322ff77c"};
separate<3,' '>(input);
std::cout << input << std::endl;
separate<4,'+'>(input);
std::cout << input << std::endl;
return 0;
}
结果输出是:
aaf fbb 332 2ff 77c
aaf + fbb +332 + 2ff + 77c
这是一种稍微不同的方法,它只对结果字符串进行1次分配,因此它应该比其他一些建议稍微有效。
std::string AddSeparators(const std::string & s)
{
if(s.size() <= 1)
return s;
std::string r;
r.reserve((s.size()*2)-1);
r.push_back(s[0]);
for(size_t i = 1; i < s.size(); ++i)
{
r.push_back('|');
r.push_back(s[i]);
}
return r;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.