zoukankan      html  css  js  c++  java
  • Visual C++ 2008入门经典 第八章深入理解类 练习题 简单

    // 第八章深入理解类 练习题2012-11-04
    //.cpp: 主项目文件。
    
    
    //第一题
    /*#include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    class ECS
    {
    private:
    	int value;
    	bool boolecs;
    public:
    	ECS(int va=0, bool ecs = false):value(va), boolecs(ecs){
    	
    	}
    	void print();
    
    	//重载运算符+
    	ECS operator+(const ECS& e) const
    	{
    	     return ECS(e.value + value, boolecs || e.boolecs);
    	}
    	//重载运算符+
    	ECS operator+(const int& i) const
    	{
    	    return ECS(value+i, boolecs);
    	}
    };
    void ECS::print()
    {
    	if(boolecs){
    	   cout<<"E";
    	}
    	cout<<this->value;
    }
    
    //重载全局运算符++
    ECS operator+(const int& a, const ECS& ecs)
    {
        return ecs + a;
    }
    
    
    
    
    int main(array<System::String ^> ^args)
    {
    	//这里的a=3直接为3,是用的默认构造函数吗?
    	ECS a = 3, c;
    	ECS b(5,true);
    
    	cout<<"a=";
    	a.print();
    	cout<<endl;
    
    	cout<<"b=";
    	b.print();
    	cout<<endl;
    
    	c = a + b;
    	cout<<"a + b = ";
    	c.print();
    	cout<<endl;
    
    	c = 7 + b;
    	cout<<"7 + b = ";
    	c.print();
    	cout<<endl;
    
    	c = a + 9;
    	cout<<"a + 9 = ";
    	c.print();
    	cout<<endl;
    
    	c = 8 + a + 9 + b;
    	cout<<"8 + a + 9 + b = ";
    	c.print();
    	cout<<endl;
        
    	system("pause");
    	return 0;
    }*/
    
    //第二题
    /*#include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    
    class IString
    {
    private:
    	char* p;
    	int length;
    public:
    	IString(const char* ch=0):p(0), length(0)
    	{
    		if(ch != 0){
    		    length = strlen(ch);
    			p = new char[length+1];
    			strcpy_s(p, length+1, ch);	
    		}
    	}
    
    	//复制构造函数
    	IString(const IString& str)
    	{
    		//cout<<"str:"<<str<<endl;
    		//妈的这里怎么判断是自己的呢
    		//if(this === str){		
    		//}
    		//开始复制
    		length = str.length;
    		p = new char[length+1];
    		strcpy_s(p,length +1, str.p);
    	}
    
    	//赋值运算符
    	IString& operator=(const IString& str)
    	{
    	    length = str.length;
    		delete p;
    		p = new char[length+1];
    		strcpy_s(p, length+1, str.p);
    		return *this;
    	}
    
    
    
    	~IString(){
    	   delete p;
    	}
    	
    	void print()
    	{
    	    cout<<"p:"<<p<<" length:"<<length<<endl;
    	}
    
    };
    
    
    int main(array<System::String ^> ^args)
    {
    	
    	IString str("Hello");
    	str.print();
    
        IString str1(str);
    	str1.print();
    
    
    
    	IString str2("Xlc");
    	str2.print();
    
    	IString str3;
    	str3 = str2;
    	str3.print();
    
        system("pause");
    	return 0;
    }*/
    
    
    //第三题
    /*#include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    
    class IString
    {
    private:
    	char* p;
    	int length;
    public:
    	IString(const char* ch=0):p(0), length(0)
    	{
    		if(ch != 0){
    		    length = strlen(ch);
    			p = new char[length+1];
    			strcpy_s(p, length+1, ch);	
    		}
    	}
    
    	IString(const char ch, int len=1):p(0), length(0)
    	{
    	    length = len;
    		if(length > 1){
    		     p = new char[length+1];
    			 memset(p, ch, length);
    			 p[length] = '\0';
    		}	
    	}
    
    	//另外一个构造函数
    	IString(int i):p(0),length(0)
    	{
    	     char sTmp[20];
    		 //_itoa_s(i,buffer,2,10);//10表示10进制2表示字符长度buffer表示存放结果
    		 _itoa_s(i, sTmp, 20, 10);
    
    		 cout<<"sTmp:"<<sTmp<<endl;
    
    		 length = strlen(sTmp);
    		 if(length > 0){
    		     p = new char[length+1];
    			 strcpy_s(p, length+1, sTmp);
    		 }
    	}
    
    
    	//复制构造函数
    	IString(const IString& str)
    	{
    		//cout<<"str:"<<str<<endl;
    		//妈的这里怎么判断是自己的呢
    		//if(this === str){		
    		//}
    		//开始复制
    		length = str.length;
    		p = new char[length+1];
    		strcpy_s(p,length +1, str.p);
    	}
    
    
    
    
    	//赋值运算符
    	IString& operator=(const IString& str)
    	{
    	    length = str.length;
    		delete p;
    		p = new char[length+1];
    		strcpy_s(p, length+1, str.p);
    		return *this;
    	}
        ~IString(){
    	   delete p;
    	}
    	
    	void print()
    	{
    	    cout<<"p:"<<p<<" length:"<<length<<endl;
    	}
    
    };
    
    
    int main(array<System::String ^> ^args)
    {
    	
    	IString str("Hello");
    	str.print();
        IString str1(str);
    	str1.print();
    	IString str2("Xlc");
    	str2.print();
    	IString str3;
    	str3 = str2;
    	str3.print();
    
    	IString str4('V', 10);
    	str4.print();
    
    	IString str5(5555);
    	str5.print();
    
    
    
        system("pause");
    	return 0;
    }
    */
    
    //第四题
    //我感觉不行,刚才也想到了,但没有用this==*str成功
    /*#include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    
    class IString
    {
    private:
    	char* p;
    	int length;
    public:
    	IString(const char* ch=0):p(0), length(0)
    	{
    		if(ch != 0){
    		    length = strlen(ch);
    			p = new char[length+1];
    			strcpy_s(p, length+1, ch);	
    		}
    	}
    	IString(const char ch, int len=1):p(0), length(0)
    	{
    	    length = len;
    		if(length > 1){
    		     p = new char[length+1];
    			 memset(p, ch, length);
    			 p[length] = '\0';
    		}	
    	}
    	//另外一个构造函数
    	IString(int i):p(0),length(0)
    	{
    	     char sTmp[20];
    		 //_itoa_s(i,buffer,2,10);//10表示10进制2表示字符长度buffer表示存放结果
    		 _itoa_s(i, sTmp, 20, 10);
    
    		 cout<<"sTmp:"<<sTmp<<endl;
    
    		 length = strlen(sTmp);
    		 if(length > 0){
    		     p = new char[length+1];
    			 strcpy_s(p, length+1, sTmp);
    		 }
    	}
    	//复制构造函数
    	IString(const IString& str)
    	{
    		//cout<<"str:"<<str<<endl;
    		//妈的这里怎么判断是自己的呢
    		//if(this === str){		
    		//}
    		//开始复制
    		length = str.length;
    		p = new char[length+1];
    		strcpy_s(p,length +1, str.p);
    	}
    	//赋值运算符
    	IString& operator=(const IString& str)
    	{
    		//if(*this != str){ //这个刚才都没进去,*this是指当前对像的值了,而str只是一个IString&的引用
    		if(this != &str){ //这里应该用this当前的地址不等于str的地址才对,&str取地址
    			length = str.length;
    			delete p;
    			p = new char[length+1];
    			strcpy_s(p, length+1, str.p);
    		}
    		return *this;		
    	}
        ~IString(){
    	   delete p;
    	}	
    	void print()
    	{
    	    cout<<"p:"<<p<<" length:"<<length<<endl;
    	}
    };
    
    
    int main(array<System::String ^> ^args)
    {
    	
    	IString str("Hello");
    	
        str = str;
    	str.print();
    
    
        system("pause");
    	return 0;
    }*/
    
    
    //第五题
    /*
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    
    class IString
    {
    private:
    	char* p;
    	int length;
    public:
    	IString(const char* ch=0):p(0), length(0)
    	{
    		if(ch != 0){
    		    length = strlen(ch);
    			p = new char[length+1];
    			strcpy_s(p, length+1, ch);	
    		}
    	}
    	IString(const char ch, int len=1):p(0), length(0)
    	{
    	    length = len;
    		if(length > 1){
    		     p = new char[length+1];
    			 memset(p, ch, length);
    			 p[length] = '\0';
    		}	
    	}
    	//另外一个构造函数
    	IString(int i):p(0),length(0)
    	{
    	     char sTmp[20];
    		 //_itoa_s(i,buffer,2,10);//10表示10进制2表示字符长度buffer表示存放结果
    		 _itoa_s(i, sTmp, 20, 10);
    
    		 cout<<"sTmp:"<<sTmp<<endl;
    
    		 length = strlen(sTmp);
    		 if(length > 0){
    		     p = new char[length+1];
    			 strcpy_s(p, length+1, sTmp);
    		 }
    	}
    	//复制构造函数
    	IString(const IString& str)
    	{
    		//cout<<"str:"<<str<<endl;
    		//妈的这里怎么判断是自己的呢
    		//if(this === str){		
    		//}
    		//开始复制
    		length = str.length;
    		p = new char[length+1];
    		strcpy_s(p,length +1, str.p);
    	}
    	//赋值运算符
    	IString& operator=(const IString& str)
    	{
    		//if(*this != str){ //这个刚才都没进去,*this是指当前对像的值了,而str只是一个IString&的引用
    		if(this != &str){ //这里应该用this当前的地址不等于str的地址才对,&str取地址
    			length = str.length;
    			delete p;
    			p = new char[length+1];
    			strcpy_s(p, length+1, str.p);
    		}
    		return *this;		
    	}
    
    	//重载operator+()运算符
    	IString operator+(const char* ch)
    	{
    		 //int len = strlen(ch);
    		 //重新设置长度
    		 //int _len = length+len; //两个字符串合并以后的长度
    		 //char* temp = new char[_len]; //重新定义字符串指针
    		 //当两个字符串合并到一起去
    		 //int i=0;
    		 //for(i=0; i<length; i++){
    		 //    temp[i] = p[i];
    		 //}
    		 //for(int j=0; i<_len; j++, i++){
    		 //     temp[i] = ch[j];
    		 //}
    		 //temp[_len] = '\0'; //合并成功
    		 //cout<<"temp:"<<temp<<endl;
    		 //return IString(temp);
    		 
    		 //上面是自己写的
    		 //下面是答案上给的	     
    		 return *this + IString(ch);
    	}
    
    	IString operator+(const IString& s)
    	{
    	      size_t _length = length + s.length + 1;
    		  char* temp = new char[_length];
    		  strcpy_s(temp, _length, p);   //把p复制到temp里面去
    		  //cout<<"temp:"<<temp<<endl;
    		  //strcpy_s(temp, _length, s.p); //这个也在智能了吧,直接把两个这么合并起来了,还知道第一次的p被加到了什么地方为止
    		  //弄不懂这里样
    		  //哥我错了,这里用的是strcat_s
    		  strcat_s(temp,_length, s.p);
    		  //cout<<"temp:"<<temp<<endl;
    		  return IString(temp);
    	}
    
    	//重载+=
    	IString& operator+=(const IString& str)
    	{
    	     *this = *this + str; //用当前对像+str,因为上面已经重新了该+运算符
    		 return *this; //直接返回
    	}
    
    
        ~IString(){
    	   delete p;
    	}	
    	void print()
    	{
    	    cout<<"p:"<<p<<" length:"<<length<<endl;
    	}
    };
    
    
    int main(array<System::String ^> ^args)
    {
    	
    	IString str("Hello");
    
    	IString str1 = str + " C++";
    	str1.print();
    
    
    	IString str2(" PHPchina");
    	str += str2;
    	str.print();
        system("pause");
    	return 0;
    }*/
    
    //第六题
    /*
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    class CStack
    {
    public:
    	CStack(int n=10); //构造函数
    	~CStack();        //析造函数
    	void push(int i); //追加数据
    	int pop();
    	void print();
    private:
    	int* pList;       //定义一个指针
    	int size;         //指针长度
    	int next;         //当前的索引值
    };
    
    //创建一个长度为n的int指定,保存到pList中去
    CStack::CStack(int n):size(n),next(0)
    {
    	pList = new int[size];
    }
    CStack::~CStack()
    {
        delete []pList; //清空pList指针
    }
    
    
    void CStack::push(int i)
    {
    	//当下一条指针小于99时,就还可以追加上去
    	//next是指当前的索引值
    	if(next < 99){
    	    pList[next++] = i;
    	}
    }
    //返回最后一条值
    int CStack::pop()
    {
        //cout<<"next:"<<next<<endl;
    	return pList[--next];
    	//这里的返回并没有把该地址去掉,而只是在next长度中减一了,不能读出来了
    }
    
    void CStack::print()
    {
         cout<<'[';
    	 //这里从最后开始循环到最前面
    	 for(int i=next-1; i>=0; i--){
    	       //cout<<"i="<<i<<' '<<pList[i];
    		  cout<<' '<<pList[i];
    	 }
    	 cout<<"]"<<endl;
    }
    
    
    int main(array<System::String ^> ^args)
    {
    
    	CStack s(20);
    	s.push(5);
    	s.push(10);
    	s.push(8);
    	s.print();
    	cout<<"最上面的数值为:"<<s.pop()<<endl;
    	s.print();
        system("pause");
    	return 0;
    }*/
    
    
    //第七题
    /*#include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    //ref 引用类
    ref class Box
    {
    public:
    	//默认构造函数
    	Box()
    	{
    	     Box(1.0,1.0,1.0);
    	}
    	//带三个参数的构造函数
    	Box(double lv, double wv, double hv)
    	{
    	     lv = lv <= 0.0 ? 1.0 : lv;
    		 wv = wv <= 0.0 ? 1.0 : wv;
    		 hv = hv <= 0.0 ? 1.0 : hv;
    
    		 length = lv > wv ? lv : wv;
    		 width = wv < lv ? wv : lv;
    		 height = hv;
    	}
    	//计算面积
    	double Volume()
    	{
    	    return length * width * height;
    	}
    	//属性(property)是很多时髦的面向对象编程语言提供的一种特性。通过属性,程序员可以如同访问成员数据一样访问一组
    	property double Length	
    	{
    		double get(){ return length;}    
    	}
    	property double Width{
    		double get(){ return width;}
    	}
    	property double Height{
    		double get(){ return height;}
    	}
    
    	//重载运算符operator+
    	Box^ operator+(Box^ box){
    	    //返回一个新的Box引用类
    		return gcnew Box(length > box->length ? length : box->length,
    			             width > box->width ? width : box->width,
    						 height + box->height);
    	}
    
    	//重载运算符operator/
    	int operator/(Box^ box)
    	{
    	     int tc1 = 0;
    		 int tc2 = 0;
    		 //第一个的宽度和高度除以box的高宽,看能装下几个
    		 tc1 = safe_cast<int>(length / box->length) * safe_cast<int>(width / box->width);
    
    		 //第当前对像的高度除以box的宽度,用当前对像的宽度除以box的高度,看能装几个
    		 tc2 = safe_cast<int>(length / box->width) * safe_cast<int>(width/box->length);
             //Console::WriteLine("tc1:{0} tc1:{1}", tc1, tc2);
    
    		 //返回数量
    		 return static_cast<int>(height/box->height) * (tc1 > tc2 ? tc1 : tc2);
    	}
    
    	//重载运算符operator*();
    	Box^ operator*(int n)
    	{
    		if(n%2 == 0){ //如果是能被2整除的数
    			//宽*2 然后高度加n/2
    			return gcnew Box(length, 2.0*width, (n/2)*height);
    		}else{
    		    return gcnew Box(length, width, n*height);
    		}
    	}
    
    	//重载%运算符
    	double operator%(Box^ box)
    	{
    		 //先用this/box看当前this能装下几个box,然后来*每个box的面积
    		 //用当前的面积减去
    	     return Volume() - (this/box)*box->Volume(); 
    	}
    
    	//重载运算符>=
    	bool operator>=(double value)
    	{
    	     return value >= this;
    	}
    
    	//重载<=
    	bool operator<=(double value)
    	{
    	     return value >= this;     
    	}
    
    	//重载 > 
    	static bool operator>(double value, Box^ box)
    	{
    	     return value > box->Volume();
    	}
    	static bool operator<(double value, Box^ box)
    	{
    	    return value < box->Volume();
    	}
    
    	static bool operator>(Box^ box, double value)
    	{
    	    return value < box->Volume();
    	}
    	static bool operator<(Box^ box, double value)
    	{
    	    return value > box->Volume();
    	}
    
    	static bool operator>=(double value, Box^ box)
    	{
    	    return value >= box->Volume();
    	}
    	static bool operator<=(double value, Box^ box)
    	{
    	    return value <= box->Volume();
    	}
    
    	static bool operator==(double value, Box^ box)
    	{
    	    return value == box->Volume();
    	}
    	static bool operator==(Box^ box, double value)
    	{
    	    return box->Volume() == value;
    	}
    
    	static Box^ operator*(int n, Box^ box)
    	{
    	    return box*n;
    	}
    private:
    	double length;
    	double width;
    	double height;
    };
    
    
    
    
    
    int main(array<System::String ^> ^args)
    {
    	Box^ candy = gcnew Box(1.5, 1.0, 1.0);//一块糖的大小
    	Box^ candyBox = gcnew Box(7.0, 4.5, 2.0); //一个小包装的大小
    	Box^ carton = gcnew Box(30.0, 18.0, 18.0);//一个大礼盒的包装大小
    
    	int numCandies = candyBox / candy; //一个小包装育装多少块	 
    	int numCboxes = carton / candyBox;  //一个大礼盒能装多少小包装
    	double space = carton % candyBox;   //还余下多少空间
    
    	Console::WriteLine("candyBox能装 {0} 块糖果", numCandies);
    	Console::WriteLine("carton能装 {0} candyBox包糖果", numCboxes);
    	Console::WriteLine("carton能装 {0} candyBox包糖果后,还余下的空间为{1}", numCboxes, space);
    
    	//长度
    	for(double length=3.0; length<=7.5; length+=0.5){
    		//宽度
    		for(double width = 3.0; width<=5.0; width+=0.5){
    		    //高度
    			for(double height=1.0; height<= 2.5; height+=0.5){
    			       Box^ tryBox = gcnew Box(length, width, height);
    				   //装满以事余下的空间要小于一盒tryBox的空间
    				   //要能正好装盒candy的数量
    				   //并且装装的糖果块数要大于30块
    				   if(carton % tryBox < tryBox->Volume() && tryBox % candy == 0.0 && tryBox/candy >= 30)
    				   {
    					   Console::WriteLine(L"\n\nTrial Box L={0} W={1} H={2}", tryBox->Length, tryBox->Width, tryBox->Height);
    					   Console::WriteLine(L"一共能装 {0} 块糖果",tryBox/candy);
    					   Console::WriteLine(L"一大礼箱能装 {0} 多少盒", carton/tryBox);
    				   }
    			}
    		}
    	}
        system("pause");
    	return 0;
    }*/
    
    
    //第八题:
    /*
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    int main(array<System::String ^> ^args)
    {
    	const int MaxLength = 100;
    	//开始处理输
    	string str;	
    	cout<<"请输入字符串吧(*结束):"<<endl;
    	getline(cin,str, '*');
    	cout<<"str:"<<str<<endl;
    
    
    	
    	//首先处理一下用户需要替换的单词
    	string repString;
    	cout<<"请输入你人替换的单词(*结束):"<<endl;
    	getline(cin, repString, '*');
    	cout<<"repString:"<<repString<<endl;
    
    	//或者放入一个字符串数组中去
    	size_t start = 0;
    	size_t end = 0;
    	size_t count = 0;
    	string keyStrings[MaxLength];
        //关键词的数成已经完成
    	while(true){
    	     start = repString.find_first_not_of(' ', start);
    		 if(start == string::npos){
    		     break;
    		 }
    		 end = repString.find_first_of(' ', start);
    		 if(end == string::npos){
    		     end = repString.length();
    		 }
    		 if(count > MaxLength){
    			 cout<<"超出了字符串数组的长度."<<endl;
    		     break;
    		 }
    		 string s = repString.substr(start, end-start);
    		 keyStrings[count++] = s;
    		 start = end;
    		 end = string::npos;
    	}
    	//开始查换和替换str字符串中出现的keyStrings的值
    	for(size_t i=0; i<count; i++){
    		 size_t _start = 0;
    		 size_t _end=0;
    	     cout<<keyStrings[i]<<endl;
    		 while(true){
    			 //没有理解这个函数哦
    			 //find_first_of是当keyStrings[i]中出现的任意字符,就做数了,而不是字符串
    			 _start = str.find_first_of(keyStrings[i], _start);
    			 if(_start == string::npos){
    			    break;
    			 }
    			 cout<<"_start:"<<_start<<endl;
    			 _end = str.find_first_of(' ', _start);
    			 if(_end == string::npos){
    			    _end = str.length();
    			 }
    			 cout<<"开始位置是_start:"<<_start<<" _end:"<<_end<<endl;
    			 string s = str.substr(_start, _end-_start);
    			 cout<<"s:"<<s<<endl;
    			 cout<<endl;
    			 _start = _end;
    			 _end = string::npos;
    		 }
    	}
        system("pause");
    	return 0;
    }
    ////////////////失败	
    */
    
    //第八题答案上这么写的,练习一下
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace System;
    int main(array<System::String ^> ^args)
    {
    	string text; //写义字符串text
    	const size_t maxwords(100); //最大的字符长度100
    	string words[maxwords];     //定义一个长度为100的字符串数组
    	size_t wordcount(0);        //当前字符串的长度
    
    	cout<<"输入要搜索的文本以#号结束"<<endl;
    	getline(cin,text, '#'); //将输入的字符串保存到text中
    	string textcopy(text);  //声明一个textcopy中然后把text初始给他
    
    	//转换为小字
    	for(size_t t = 0; t<textcopy.length(); t++)
    	{
    	     textcopy[t] = tolower(textcopy[t]);
    	}
    
    	while(true)
    	{
    	    cout<<"输入一个词,是要被替换的字符串或输入#号结束:"<<endl;
    		cin>>words[wordcount]; //妈的保存到了wrods中去了
    		if(words[wordcount] == "#"){ //如果为#退出
    		   break;
    		}
    		//如果输入的长度已经大于了数组的容量,直接退出
    		if(++wordcount == maxwords){
    		   cout<<"已经超出了字符串数组的最大值"<<endl;
    		   break;
    		}
    	}
    
    
    	//开始循环查找所输入的需要替换的值了
    	for(size_t i = 0; i<wordcount; i++)
    	{
    	     string wordcopy = words[i];
    		 //对当前词转换为小写
    		 for(size_t j=0; j<wordcopy.length(); j++){
    		      wordcopy[i] = tolower(wordcopy[i]);
    		 }
    
    		 //应该是创建一个以wordcopy为长度的字符串,值为*
    		 string asterisks(wordcopy.length(), '*');
    		 cout<<"Each occurrence of: "<<words[i]<<"  will be replaced by  "<<asterisks<<" . "<<endl;
    
    		 size_t position = 0;
    		 //循环条件为在textcopy中查找wordcopy的位置,从position开始,直接为string::npos为止
    		 while((position = textcopy.find(wordcopy, position)) != string::npos)
    		 {
    			 cout<<"position:"<<position<<endl;
    			 //如果为位置为0时
    			 if(position == 0){
    				 //当当前的关键词长度与 text的长度一样时
    				 if(position+wordcopy.length() == text.length())
    				 {
    					  text.replace(position, wordcopy.length(), asterisks); //替换
    				 
    				 //功能:如果参数是字母字符,函数返回非零值,否则返回零值。
    				 //如果该值不为字母 检查过去的这个词不是字母
    				 }else if(!isalpha(textcopy[position+wordcopy.length()])){
    				      text.replace(position, wordcopy.length(), asterisks);
    				 }  
    
    			 //判断textcopy[position-1]的值是否为字母,如果不是字母执行
    			 }else if(!isalpha(textcopy[position-1]))
    			 {
    				 if(position + wordcopy.length() == text.length())
    				 {
    				     text.replace(position, wordcopy.length(), asterisks);
    				 }else if(!isalpha(textcopy[position+wordcopy.length()])){
    				     text.replace(position, wordcopy.length(), asterisks);
    				 }			 
    			 }
    			 position += wordcopy.length();
    			 //然后移动position的长度
    		 }
    		 cout<<"处理后的原始字符串是现在:"<<text<<endl;
    	}	
    
        system("pause");
    	return 0;
    }
    

      

  • 相关阅读:
    Android ViewPager实现选项卡切换
    Android Fragment是什么
    Android 点击文字实现跳转
    海底捞的十五天,让我重当程序员
    saltstack 实现haproxy+keepalived
    saltstack 实现系统初始化
    saltstack 实现redis主从
    python类基础
    Mysql 数据库备份工具 xtrabackup
    Python函数式编程
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2753552.html
Copyright © 2011-2022 走看看