首页 > 解决方案 > 如何在字符串中间插入字符?C++

问题描述

此代码的目的是x在重复字母之间插入一个。例如,如果我要输入"CoolBoolFallmoose",则输出将是"CoxolBoxolFalxlmoxose"

该代码还应该生成偶数对字母,因此如果有奇数个字符,则将 anx添加到字符串的末尾。一个例子是,如果我们有"ball",它会变成"balxlx"偶数对:"ba" "lx" "lx"

这是我到目前为止的代码:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main(){
    string cipher, plain, paired = "";
    cout << "input plaintext(no spaces, lowercase):\n";
    cin >> plain;

    for (int i=0;i<plain.length();i++){
        if (plain[i]==plain[i+1]){
            plain.insert(i,'x');
        }
        paired[i]=paired[i];
        cout<<paired[i];
    }
   
    if (paired.length() % 2!= 0){
        paired=+'x';
    }
    
    cout<<paired<<endl;
    return 0;
}

我得到的输出和我的输入一样,没有"x"在任何地方添加。

我遇到的问题是,每次我尝试对字符串使用append()orinsert()函数时,我的编译器都会出现错误,即 xCode。还有其他方法可以解决此代码吗?

编辑:错误说:

没有匹配的成员函数来调用插入

它也出现在append().

标签: c++stringxcode

解决方案


我真的不知道你想对这部分做什么:

paired[i]=paired[i];
cout<<paired[i];

但除此之外逻辑是好的。这是我的看法,x是一个计数器:

#include <iostream>
#include <string>
using namespace std;

int main(){
    string m,n;
    int x = 0;
    
    cout << "Input: " << endl;
    getline(cin, m);
    
    for(int i = 0;i < m.length();i++){
        x++;
        n = n + m[i];
        if(m[i] == m[i+1]){
            n = n + 'x';
            x++;
        }
    }
    if((x % 2) != 0){
        n = n + 'x';
    }
    cout << n;

    return 0;
}

推荐阅读