将两个基本字符串连接在一起

Concatenating 2 basic strings together

本文关键字:字符串 连接 在一起 两个      更新时间:2023-10-16

我有两个字符串:

string word;
string alphabet;

word有一些输入,我传递给;比如"XYZ"

alphabet有除XYZ以外的字母,所以是"ABCDEFGHIJKLMNOPQRSTUVW"

当我试图用"+="连接它们时,我得到的只是word(即"XYZ")。我想让它看起来像这样:

XYZABCDEFGHIJKLMNOPQRSTUVW 

我做错了什么?代码基本上就是这个vvvv

=========================== encryption.cpp =================================================

#include <cstdlib>
#include <iostream>
#include "encryption.h"
#include <string>
encryption::encryption()
{
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}

string encryption::removeletter(string word,char letter)
{
    //remove letter
    string temp;
    int indis=0;
    for(int i = 0; word[i] != ''; i++)
    {
        if(word[i] != letter)
            {
                temp[indis]=word[i] ;
                indis++;
            }
    }
    word=temp;
    return word;
}
This is the function i have proplems with :
    void encryption::encrypt(string word)//main.cpp is just calling this atm
    {
        string temp;
        int pos;
         //getting rid of the repeating letters
        for(int i = 0; i < word.length(); i++)
        {
            if( (pos = temp.find(kelime[i])) < 0)
                temp += word[i];
        }
        word=temp;//that ends here
        //taking words letters out of the alphabet
        for(int i = 0; i < word.length(); i++)
        {
            alfabet=removeletter(alfabet,word[i]);
        }
        for(int i = 0; i < word.length()-1; i++)
        {
            for(int j=0;alfabet[j] !=''; j++)
                if(alfabet[j+1] =='') alfabet[j]='';
        }
        /* I tried += here */
    }

=========================== encryption.h ====================================================

#ifndef encryption_h
#define encryption_h
#include<string>
    class encryption
    {
    public:
        encryption();
        void encrypt(string word);
        string removeletter(string word,char letter);
        //some other functions,i deleted them atm
    public:
            string alphabet;
            string encryptedalphabet;
            //staff that not in use atm(deleted)
    };
#endif

=========================== main.cpp ======================================================

#include <cstdlib>
#include <iostream>
#include "encryption.h"
#include <string>
string word;
encryption encrypted;
cin>>word;
encrypted.encrypt( word);


 /****************************************************************************
orginalcode
**cikarmasifresi.cpp
****************************************************************************/
#include <cstdlib>
#include <iostream>
#include "cikarmasifresi.h"
#include <string>

using namespace std;
cikarmasifresi::cikarmasifresi()
{
alfabe = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}

string cikarmasifresi::yazisifrele(string yazi)
{
    for(int j=0;yazi[j] != ''; j++)
    {
            for(int i = 0; alfabe[i] != ''; i++)
            {
                if(yazi[j]==alfabe[i])
                {
                    yazi[j]=sifrealfabesi[i];
                }
            }
    }
    return yazi;
}
string cikarmasifresi::sifrecoz(string sifreliyazi)
{
    for(int j=0;sifreliyazi[j] != ''; j++)
    {
            for(int i = 0; sifrealfabesi[i] != ''; i++)
            {
                if(sifreliyazi[j]==sifrealfabesi[i])
                {
                    sifreliyazi[j]=alfabe[i];
                }
            }
    }
    return sifreliyazi;
}
string cikarmasifresi::harfcikar(string kelime,char harf)
{
    //istenmiyen harfi cikar
    string temp;
    int indis=0;
    for(int i = 0; kelime[i] != ''; i++)
    {
        if(kelime[i] != harf)
            {
                temp[indis]=kelime[i] ;
                indis++;
            }
    }
    kelime=temp;
    return kelime;
}

void cikarmasifresi::sifrelialfabeolustur(string kelime)
{
    string temp,temp2;
    sifrekelimesi=kelime;
    int pos;
    for(int i = 0; i < kelime.length(); i++)
    {
        if( (pos = temp.find(kelime[i])) < 0)
            temp += kelime[i];
    }
    kelime=temp;
    for(int i = 0; i < kelime.length(); i++)
    {
        alfabe=harfcikar(alfabe,kelime[i]);
    }
    for(int i = 0; i < kelime.length()-1; i++)
    {
        for(int j=0;alfabe[j] !=''; j++)
            if(alfabe[j+1] =='')  alfabe[j]='';
    }

     sifrealfabesi=kelime+alfabe;


        cout<<sifrealfabesi;
    cout<<endl;
    cout<<endl;
        for(int i = 0; kelime[i] != ''; i++)
    {
        cout<<kelime[i];
    }



}


/****************************************************************************
** orginalcode
**cikarmasifresi.h
****************************************************************************/

#ifndef cikarmasifresi_h
#define cikarmasifresi_h
#include<string>
using namespace std;
class cikarmasifresi
{
public:
    cikarmasifresi();
    void sifrelialfabeolustur(string kelime);
    string yazisifrele(string yazi);
    string sifrecoz(string sifreliyazi);
    string harfcikar(string kelime,char harf);
public:
        string alfabe;
        string sifrealfabesi;
        string sifrekelimesi;
};
#endif


/****************************************************************************
 orginal code
**main.cpp
****************************************************************************/
#include <cstdlib>
#include <iostream>
#include "cikarmasifresi.h"
#include <string>
using namespace std;
int main()
{
        system("cls");
        string kelime,yazi,sifreli;
        cikarmasifresi sifrele;
        cout<<"********************************************************************************"<<endl;
        cout<<"sifre kelimesi gir :"<<endl;
        cin>>kelime;
        sifrele.sifrelialfabeolustur(kelime);/*
        cout<<"********************************************************************************"<<endl;
        cout<<"Alfabe  :"<<sifrele.alfabe<<endl;
        cout<<"********************************************************************************"<<endl;
        cout<<"Sifreli Alfabe :"<<sifrele.sifrealfabesi<<endl;
        cout<<"********************************************************************************"<<endl;
        cout<<"Cumle gir :"<<endl;
        cin>>yazi;
        cout<<"********************************************************************************"<<endl;
        cout<<"Sifre :"<< sifrele.yazisifrele(yazi)<<endl;
        cout<<"********************************************************************************"<<endl;
        cout<<"sifreli yazi gir :"<<endl;
        cin>>sifreli;
        cout<<"********************************************************************************"<<endl;
        cout<<"Sonuc :"<<sifrele.sifrecoz(sifreli)<<endl;
        */


}

这是错误的

string cikarmasifresi::harfcikar(string kelime,char harf)
{
    //istenmiyen harfi cikar
    string temp;
    int indis=0;
    for(int i = 0; kelime[i] != ''; i++)
    {
        if(kelime[i] != harf)
            {
                temp[indis]=kelime[i] ;
                indis++;
            }
    }
    kelime=temp;
    return kelime;
}
应该

string cikarmasifresi::harfcikar(string kelime,char harf)
{
    //istenmiyen harfi cikar
    string temp;
    int indis=0;
    for(int i = 0; i < kelime.length(); i++)
    {
        if(kelime[i] != harf)
            {
                temp[indis]=kelime[i] ;
                indis++;
            }
    }
    kelime=temp;
    return kelime;
}

kelimme是一个std::字符串。它没有像C字符串那样的空终止符。

这些函数都是错误的

string cikarmasifresi::sifrecoz(string sifreliyazi)
string cikarmasifresi::yazisifrele(string yazi)

另一个错误是

string cikarmasifresi::harfcikar(string kelime,char harf)
{
    //istenmiyen harfi cikar
    string temp;
    int indis=0;
    for(int i = 0; i < kelime.length(); i++)
    {
        if(kelime[i] != harf)
            {
                temp[indis]=kelime[i] ;
                indis++;
            }
    }
    kelime=temp;
    return kelime;
}

temp是一个零长度字符串,所以temp[indis]是一个错误。你可能指的是这样的temp += kelime[i]

string cikarmasifresi::harfcikar(string kelime,char harf)
{
    //istenmiyen harfi cikar
    string temp;
    for(int i = 0; i < kelime.length(); i++)
    {
        if(kelime[i] != harf)
            {
                temp += kelime[i];
                indis++;
            }
    }
    kelime=temp;
    return kelime;
}

这是第三个错误

for(int i = 0; i < kelime.length()-1; i++)
{
    for(int j=0;alfabe[j] !=''; j++)
        if(alfabe[j+1] =='')  alfabe[j]='';
}

我真的不知道你在这里想做什么,所以我不能建议修复。也许你应该删掉这段代码