求助a+b
  • 板块学术版
  • 楼主_8008008
  • 当前回复4
  • 已保存回复5
  • 发布时间2023/11/30 13:06
  • 上次更新2023/11/30 17:57:33
查看原帖
求助a+b
803885
_8008008楼主2023/11/30 13:06
#include<iostream>
#include<cstring>
#include<vector>
#include<stdio.h>
using namespace std;
class cstr{
	private:
		vector<char>a;
		int len;
	public:
		void clear(){
			a.clear();
			len=0;
		}
		const int size(){
			return len;
		}
		void reserve(const int num){
			a.reserve(num);
		}
		void pop_back(){
			a.pop_back();
			len--;
		}
		void push_back(const char v){
			a.push_back(v);
			len++;
		}
		void push_chars(const char*v){
			int lenv=strlen(v);
			reserve(lenv+10);
			for(int i=0;i<lenv;i++)push_back(v[i]);
		}
		void push_cstr(cstr&v){
			int lenv=v.size();
			reserve(lenv+10);
			for(int i=0;i<lenv;i++)push_back(v[i]);
		}
		cstr(const char*init){
			clear();
			push_chars(init);
		}
		cstr(){
			clear();
			reserve(10);
			len=0;
		}
		char operator[](const int p){
			return this->a[p];
		}
  		cstr operator=(cstr v){
			if(this==&v)return*this;
			this->clear();
			this->reserve(v.size()+10);
			for(int i=0;i<v.size();i++)this->push_back(v[i]);;
    		return *this;
		}
		cstr&operator=(const char*v){
			int lenv=strlen(v);
			this->clear();
			this->reserve(lenv+10);
			for(int i=0;i<=lenv;i++)this->push_back(v[i]);
			return *this;
		}
		cstr&operator+=(const char*v){
			int lena=this->len,lenv=strlen(v);
			this->reserve(lena+lenv+10);
			for(int i=0;i<lenv;i++)this->push_back(v[i]);
			return*this;
		}
		cstr operator+(const char*v){
			int lenv=strlen(v),lena=this->size();
    		cstr ans;
   		 	for(int i=0;i<lena;i++)ans.push_back(this->a[i]);
    		for(int i=0;i<lenv;i++)ans.push_back(v[i]);
   			return ans;
		}
		void charsit(char*v){
			for(int i=0;i<len;i++)v[i]=a[i];
		}
	    void getcstr(char stop){
			char num;
			bool fir=true;
			while(num!=stop||fir){
				num=getchar();
				push_back(num);
				fir=false;
			}
			return;
		}
		void getcstr(){
			getcstr('\n');
		}
		friend istream&operator>>(istream&,cstr&);
		friend ostream&operator<<(ostream&,cstr&);
		friend cstr operator+(const char*,cstr&);
		friend cstr operator+(cstr&,cstr&);
};
istream&operator>>(istream&input,cstr&str){
	char num='a';
	while(true){
		num=getchar();
		if(num=='\n'||num==' '||num=='\r')break;
		str.push_back(num);
	}
	return input;
}
ostream&operator<<(ostream&output,cstr&str){
	for(int i=0;i<str.size();i++)putchar(str[i]);
	return output;
}
cstr operator+(const char*p,cstr&v){
	int lena=strlen(p),lenv=v.size();
    cstr ans;
    for(int i=0;i<lena;i++)ans.push_back(p[i]);
    for(int i=0;i<lenv;i++)ans.push_back(v[i]);
   	return ans;
}
cstr operator+(cstr&a,cstr&v){
	int lena=a.size(),lenv=v.size();
	cstr ans;
    for(int i=0;i<lena;i++)ans.push_back(a[i]);
    for(int i=0;i<lenv;i++)ans.push_back(v[i]);
   	return ans;
}
cstr a="114514",b="1919810";
int main(){
	cout<<a+b;
	return 0; 
} 
E:\cstr.cpp	In function 'int main()':
128	10	E:\cstr.cpp	[Error] cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
  128	10	E:\cstr.cpp	[Error] cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
    1		E:\cstr.cpp	                 from E:\cstr.cpp
    602	5	D:\c++\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ostream	[Note] initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = cstr]'

要怎么调

2023/11/30 13:06
加载中...