假设有一个数组......并且数组的内容=“铁人”现在,我需要在这个字符串中添加一些额外的字符,如“i * r%o #n @ m ^ a!n”
out[i]="ironman"
Outputs:
out[]=i
out[]=*
out[]=r
out[]=%
out[]=o
out[]=#
out[]=n
out[]=@
out[]=m
out[]=^
out[]=a
out[]=!
out[]=n
我编写了一个在字符串末尾连接的代码,但我希望在字符串之间连接。
char in[20] = "ironman";
const unsigned int symbol_size = 5;
std::string symbols[symbol_size];
std::string out(in);
out = out + "@" + "*" + "#";
答案 0 :(得分:1)
您可以使用string.insert(pos,newString)。示例如下:
std::string mystr
mystr.insert(6,str2);
如果你知道索引,请直接指定为' pos'。否则,你可能想要做一些str.find()并传入结果。
答案 1 :(得分:1)
如果我已经正确理解了您的需求,那么您可以使用以下简单的方法
#include <iostream>
#include <string>
#include <cstring>
int main()
{
char in[] = "ironman";
char symbols[] = "*%#@^!";
std::string s;
s.reserve( std::strlen( in ) + std::strlen( symbols ) );
char *p = in;
char *q = symbols;
while ( *p && *q )
{
s.push_back( *p++ );
s.push_back( *q++ );
}
while ( *p ) s.push_back( *p++ );
while ( *q ) s.push_back( *q++ );
std::cout << s << std::endl;
}
程序输出
i*r%o#n@m^a!n
您可以编写单独的功能。例如
#include <iostream>
#include <string>
#include <cstring>
std::string interchange_merge( const char *s1, const char *s2 )
{
std::string result;
result.reserve( std::strlen( s1 ) + std::strlen( s2 ) );
while ( *s1 && *s2 )
{
result.push_back( *s1++ );
result.push_back( *s2++ );
}
while ( *s1 ) result.push_back( *s1++ );
while ( *s2 ) result.push_back( *s2++ );
return result;
}
int main()
{
char in[] = "ironman";
char symbols[] = "*%#@^!";
std::string s = interchange_merge( in, symbols );
std::cout << s << std::endl;
}
输出与上面相同
i*r%o#n@m^a!n