string div(const string& a,const string& b) //算法除 { string sign=((a[0]=='-')+(b[0]=='-')==1?"-":""); string aa(a[0]=='-'?a.substr(1):a); string bb(b[0]=='-'?b.substr(1):b); if(absLessThan(aa,bb)) return "0"; string s; string y(aa.substr(0,bb.length()-1)); for(int i=bb.length()-1;i<aa.length();i++) { y+=aa[i]; int count=0; for(;!absLessThan(y,bb);count++) substract(y,bb); s+=char(count+'0'); } int pos=s.find_first_not_of('0'); //滤去前导0,加上符号 if(pos!=string::npos) s=s.substr(pos); string c=sign+s;//C串判断是否为大于200位的数 if(c.length()>200) return "Too Large Number."; else return sign+s; }
时间: 2024-04-27 17:23:12 浏览: 10
这是一个算法除的函数,可以用于大整数的除法运算。函数的输入参数是两个字符串a和b,表示要相除的两个大整数,函数返回值是字符串类型的商。函数的具体实现是先判断a和b的正负性,然后将它们转换为正整数进行运算。接着,通过一个循环来模拟手算除法的过程,每次从a中取出一部分与b进行比较,得到商和余数,将商保存到结果字符串s中。最后,滤去结果字符串s中的前导0并加上符号,得到最终的商。函数还加入了一个判断,如果得到的商的位数超过了200位,则返回字符串"Too Large Number."。
相关问题
string& operator=(const string &s)
这段代码看起来像是C++中的字符串类(string)的赋值运算符重载函数(operator=)。赋值运算符重载函数用于将一个对象的值赋给另一个对象。
在这段代码中,赋值运算符重载函数的参数是一个常量引用(const string& s),表示传入的参数是一个常量字符串对象的引用。常量引用避免了不必要的拷贝操作,提高了效率。
返回类型是一个字符串的引用(string&),即赋值操作后返回的对象的引用。这样做可以实现连续赋值操作,例如 "a = b = c"。
赋值运算符重载函数的主要功能是将传入对象的值复制给当前对象。具体实现可能包括为当前对象的成员变量分配内存、拷贝传入对象的值等操作。
整体来看,这段代码是在定义一个赋值运算符重载函数,用于将传入的字符串对象的值赋给当前对象,并返回当前对象的引用。这样可以实现字符串对象之间的值传递和赋值操作。
string A转const char* B
可以通过以下代码将string类型的A转换为const char*类型的B:
```
const char* B = A.c_str();
```
其中,c_str()函数可以取得string对象中字符串的指针,该指针指向以空字符结尾的字符数组。因此,将c_str()函数的返回值赋给const char*类型的变量B即可完成转换。