将两个基本字符串连接在一起
Concatenating 2 basic strings together
我有两个字符串:
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]=' ';
}
我真的不知道你在这里想做什么,所以我不能建议修复。也许你应该删掉这段代码
相关文章:
- 使用短运算符的字符串连接有区别吗?
- 字符串连接时间复杂度 c++
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 如何在 C 宏中将变量字符串与文字字符串连接起来?
- C++中干净高效的字符串连接
- 如何将 Unicode 字符串连接成字符串以传递到 mysql 调用中
- 如何与字符串连接thar数组
- 如何将平台^字符串转换为wstring,然后与L字符串连接
- 如何在c++中进行快速字符串连接
- 在C++中,相当于CPython字符串连接
- 如何在 c++ 中使用 STL 将带有空格的字符串连接成一个字符串
- C++将三个char*字符串连接在一起
- 尝试通过二叉树中的递归返回字符串(连接)
- 使用流的字符串连接返回垃圾
- 将字符串变量与整数和文本字符串连接起来的 C++ 字符串流
- 将 int 变量与字符串连接会导致奇怪的输出
- C++ 将常量字符 * 与字符串连接起来,仅打印常量字符 *
- 通过将模板参数与字符串连接起来生成C++类型名
- 将我的对象与字符串连接
- 没有得到预期的结果字符串连接