提问者:小点点

将两个字符串合并到布尔表达式中[重复]


我有两根绳子

输入

string a='101';
string b='(_^_)v_';

输出量

string c='(1^0)v1';

你们能告诉我用C++解决这个问题的方法吗?


共1个答案

匿名用户

例如,SO:

#include <iostream>
#include <string>

int main ()
{
    std::string a="101";
    std::string b="(_^_)v_";    

    for(char& c: a)       
        b.replace(b.find("_"), sizeof("_") - 1, std::string(1, c));

    std::cout << b;
}
(1^0)v1

更新:O(n)变体

#include <iostream>
#include <string>

int main()
{
    std::string a="101";
    std::string b="(_^_)v_";    

    for(std::string::iterator ia = a.begin(), ib = b.begin(); ia != a.end() && ib != b.end(); ++ib) {
        if (*ib == '_') {
            *ib = *ia;
            ia++;
        }
    }

    std::cout << b;
}