关于C++中使用string进行异或运算?

dn587494 发布于 2016/03/03 18:43
阅读 1K+
收藏 0
#include <iostream>
#include <string>
#include <ctime>
using namespace std; string Key="                     ";
string *p_Key=&Key;
void bitcode(string *p_src,string *p_obj)
{
	for(int i=0;i<(*p_src).length();i++)
		{
			char c=(*p_src)[i]^Key[i];
			(*p_obj)[i]=c;
		}
}
void makeKey(string *p_src)
{
	for(int i=0;i<(*p_src).length();i++)
		(*p_Key)[i]=rand()%10+'0';
}
void main(void)
{
	string srcstr="How are you?";
	string *p_srcstr=&srcstr;
	string objstr="                      ";
	string *p_objstr=&objstr;
	srand(time(NULL));
	makeKey(p_srcstr);
	bitcode(p_srcstr,p_objstr);
	cout<<"密文:"<<*p_objstr<<endl;
	cout<<*p_Key<<endl;
	//bitcode(p_objstr,p_srcstr);    //前面运行没问题  此处运行提示内存溢出
	cout<<"明文:"<<*p_srcstr<<endl;

	system("pause");
}

运行后程序后部分提示string内存溢出,请问为什么呢?谢谢!



加载中
1
m
magiclogy
p_srcstr的长度超过了p_objstr,访问到p_objstr[p_objstr.size()]的时候必定会错误。。。
dn587494
dn587494
回复 @magiclogy : 解决了 谢谢~
dn587494
dn587494
回复 @magiclogy : 请问怎样才能使它前后长度一样呢?
dn587494
dn587494
错了 没有p_srcstr[*(p_objstr).length()]这个代码
m
magiclogy
回复 @dn587494 : p_strstr和p_objstr的长度从来没有一样过吧?
dn587494
dn587494
意思第二次调用这个函数的时候长度不一样吗?
0
木兰宿莽
木兰宿莽
因为你的srcstr和objstr的长度不一样长,改成一样长就好了,我试过了。话说void main是什么鬼?!
dn587494
dn587494
回复 @木兰宿莽 : 对 谢谢提醒`
木兰宿莽
木兰宿莽
回复 @dn587494 : 不是int main()吗?void main是很早之前的定义了
dn587494
dn587494
好了 谢谢 main不是主函数吗
返回顶部
顶部