Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;将字符串替换为char[] 我有下面的C++程序,它有2个大数: #include <iostream> #include <string> #define OVERFLOW 2 #define ROW b_len #define COL a_len+b_len+OVERFLOW using namespace std; int getCarry(int num) { int carry = 0; if(num>=10) { while(num!=0) { carry = num %10; num = num/10; } } else carry = 0; return carry; } int num(char a) { return int(a)-48; } string mult(string a, string b) { string ret; int a_len = a.length(); int b_len = b.length(); int mat[ROW][COL]; for(int i =0; i<ROW; ++i) { for(int j=0; j<COL; ++j) { mat[i][j] = 0; } } int carry=0, n,x=a_len-1,y=b_len-1; for(int i=0; i<ROW; ++i) { x=a_len-1; carry = 0; for(int j=(COL-1)-i; j>=0; --j) { if((x>=0)&&(y>=0)) { n = (num(a[x])*num(b[y]))+carry; mat[i][j] = n%10; carry = getCarry(n); } else if((x>=-1)&&(y>=-1)) mat[i][j] = carry; x=x-1; } y=y-1; } carry = 0; int sum_arr[COL]; for(int i =0; i<COL; ++i) sum_arr[i] = 0; for(int i=0; i<ROW; ++i) { for(int j=COL-1; j>=0; --j) { sum_arr[j] += (mat[i][j]); } } int temp; for(int i=COL-1; i>=0; --i) { sum_arr[i] += carry; temp = sum_arr[i]; sum_arr[i] = sum_arr[i]%10; carry = getCarry(temp); } for(int i=0; i<COL; ++i) { ret.push_back(char(sum_arr[i]+48)); } while(ret[0]=='0'){ ret = ret.substr(1,ret.length()-1); } return ret; } void printhuge(string a) { cout<<"\n"; for(string::iterator i = a.begin(); i!=a.end(); ++i) { cout<<*i; } } int main() { string a,b; cin>>a>>b; printhuge(mult(a,b)); return 0; } #包括 #包括 #定义溢出2 #定义行b_len #定义列a\u len+b\u len+溢出 使用名称空间std; int getCarry(int num){ 整数进位=0; 如果(数值>=10){ while(num!=0){ 进位=num%10; num=num/10; } } 否则进位=0; 返运; } int num(字符a){ 返回int(a)-48; } 字符串mult(字符串a、字符串b){ 字符串ret; int a_len=a.length(); int b_len=b.length(); 国际材料[世界其他地区][COL]; 对于(int i=0;i=0)){ n=(num(a[x])*num(b[y])+进位; mat[i][j]=n%10; 进位=进位(n); } 如果((x>=-1)和&(y>=-1))mat[i][j]=进位; x=x-1; } y=y-1; } 进位=0; 整和整列; for(int i=0;i=0;--i){ 和arr[i]+=进位; 温度=总面积[i]; 总和arr[i]=总和arr[i]%10; 进位=进位(温度); } 对于(inti=0;i_C++_Algorithm_Multiplication - Fatal编程技术网 =10){ while(num!=0){ 进位=num%10; num=num/10; } } 否则进位=0; 返运; } int num(字符a){ 返回int(a)-48; } 字符串mult(字符串a、字符串b){ 字符串ret; int a_len=a.length(); int b_len=b.length(); 国际材料[世界其他地区][COL]; 对于(int i=0;i=0)){ n=(num(a[x])*num(b[y])+进位; mat[i][j]=n%10; 进位=进位(n); } 如果((x>=-1)和&(y>=-1))mat[i][j]=进位; x=x-1; } y=y-1; } 进位=0; 整和整列; for(int i=0;i=0;--i){ 和arr[i]+=进位; 温度=总面积[i]; 总和arr[i]=总和arr[i]%10; 进位=进位(温度); } 对于(inti=0;i,c++,algorithm,multiplication,C++,Algorithm,Multiplication" /> =10){ while(num!=0){ 进位=num%10; num=num/10; } } 否则进位=0; 返运; } int num(字符a){ 返回int(a)-48; } 字符串mult(字符串a、字符串b){ 字符串ret; int a_len=a.length(); int b_len=b.length(); 国际材料[世界其他地区][COL]; 对于(int i=0;i=0)){ n=(num(a[x])*num(b[y])+进位; mat[i][j]=n%10; 进位=进位(n); } 如果((x>=-1)和&(y>=-1))mat[i][j]=进位; x=x-1; } y=y-1; } 进位=0; 整和整列; for(int i=0;i=0;--i){ 和arr[i]+=进位; 温度=总面积[i]; 总和arr[i]=总和arr[i]%10; 进位=进位(温度); } 对于(inti=0;i,c++,algorithm,multiplication,C++,Algorithm,Multiplication" />

C++;将字符串替换为char[] 我有下面的C++程序,它有2个大数: #include <iostream> #include <string> #define OVERFLOW 2 #define ROW b_len #define COL a_len+b_len+OVERFLOW using namespace std; int getCarry(int num) { int carry = 0; if(num>=10) { while(num!=0) { carry = num %10; num = num/10; } } else carry = 0; return carry; } int num(char a) { return int(a)-48; } string mult(string a, string b) { string ret; int a_len = a.length(); int b_len = b.length(); int mat[ROW][COL]; for(int i =0; i<ROW; ++i) { for(int j=0; j<COL; ++j) { mat[i][j] = 0; } } int carry=0, n,x=a_len-1,y=b_len-1; for(int i=0; i<ROW; ++i) { x=a_len-1; carry = 0; for(int j=(COL-1)-i; j>=0; --j) { if((x>=0)&&(y>=0)) { n = (num(a[x])*num(b[y]))+carry; mat[i][j] = n%10; carry = getCarry(n); } else if((x>=-1)&&(y>=-1)) mat[i][j] = carry; x=x-1; } y=y-1; } carry = 0; int sum_arr[COL]; for(int i =0; i<COL; ++i) sum_arr[i] = 0; for(int i=0; i<ROW; ++i) { for(int j=COL-1; j>=0; --j) { sum_arr[j] += (mat[i][j]); } } int temp; for(int i=COL-1; i>=0; --i) { sum_arr[i] += carry; temp = sum_arr[i]; sum_arr[i] = sum_arr[i]%10; carry = getCarry(temp); } for(int i=0; i<COL; ++i) { ret.push_back(char(sum_arr[i]+48)); } while(ret[0]=='0'){ ret = ret.substr(1,ret.length()-1); } return ret; } void printhuge(string a) { cout<<"\n"; for(string::iterator i = a.begin(); i!=a.end(); ++i) { cout<<*i; } } int main() { string a,b; cin>>a>>b; printhuge(mult(a,b)); return 0; } #包括 #包括 #定义溢出2 #定义行b_len #定义列a\u len+b\u len+溢出 使用名称空间std; int getCarry(int num){ 整数进位=0; 如果(数值>=10){ while(num!=0){ 进位=num%10; num=num/10; } } 否则进位=0; 返运; } int num(字符a){ 返回int(a)-48; } 字符串mult(字符串a、字符串b){ 字符串ret; int a_len=a.length(); int b_len=b.length(); 国际材料[世界其他地区][COL]; 对于(int i=0;i=0)){ n=(num(a[x])*num(b[y])+进位; mat[i][j]=n%10; 进位=进位(n); } 如果((x>=-1)和&(y>=-1))mat[i][j]=进位; x=x-1; } y=y-1; } 进位=0; 整和整列; for(int i=0;i=0;--i){ 和arr[i]+=进位; 温度=总面积[i]; 总和arr[i]=总和arr[i]%10; 进位=进位(温度); } 对于(inti=0;i

C++;将字符串替换为char[] 我有下面的C++程序,它有2个大数: #include <iostream> #include <string> #define OVERFLOW 2 #define ROW b_len #define COL a_len+b_len+OVERFLOW using namespace std; int getCarry(int num) { int carry = 0; if(num>=10) { while(num!=0) { carry = num %10; num = num/10; } } else carry = 0; return carry; } int num(char a) { return int(a)-48; } string mult(string a, string b) { string ret; int a_len = a.length(); int b_len = b.length(); int mat[ROW][COL]; for(int i =0; i<ROW; ++i) { for(int j=0; j<COL; ++j) { mat[i][j] = 0; } } int carry=0, n,x=a_len-1,y=b_len-1; for(int i=0; i<ROW; ++i) { x=a_len-1; carry = 0; for(int j=(COL-1)-i; j>=0; --j) { if((x>=0)&&(y>=0)) { n = (num(a[x])*num(b[y]))+carry; mat[i][j] = n%10; carry = getCarry(n); } else if((x>=-1)&&(y>=-1)) mat[i][j] = carry; x=x-1; } y=y-1; } carry = 0; int sum_arr[COL]; for(int i =0; i<COL; ++i) sum_arr[i] = 0; for(int i=0; i<ROW; ++i) { for(int j=COL-1; j>=0; --j) { sum_arr[j] += (mat[i][j]); } } int temp; for(int i=COL-1; i>=0; --i) { sum_arr[i] += carry; temp = sum_arr[i]; sum_arr[i] = sum_arr[i]%10; carry = getCarry(temp); } for(int i=0; i<COL; ++i) { ret.push_back(char(sum_arr[i]+48)); } while(ret[0]=='0'){ ret = ret.substr(1,ret.length()-1); } return ret; } void printhuge(string a) { cout<<"\n"; for(string::iterator i = a.begin(); i!=a.end(); ++i) { cout<<*i; } } int main() { string a,b; cin>>a>>b; printhuge(mult(a,b)); return 0; } #包括 #包括 #定义溢出2 #定义行b_len #定义列a\u len+b\u len+溢出 使用名称空间std; int getCarry(int num){ 整数进位=0; 如果(数值>=10){ while(num!=0){ 进位=num%10; num=num/10; } } 否则进位=0; 返运; } int num(字符a){ 返回int(a)-48; } 字符串mult(字符串a、字符串b){ 字符串ret; int a_len=a.length(); int b_len=b.length(); 国际材料[世界其他地区][COL]; 对于(int i=0;i=0)){ n=(num(a[x])*num(b[y])+进位; mat[i][j]=n%10; 进位=进位(n); } 如果((x>=-1)和&(y>=-1))mat[i][j]=进位; x=x-1; } y=y-1; } 进位=0; 整和整列; for(int i=0;i=0;--i){ 和arr[i]+=进位; 温度=总面积[i]; 总和arr[i]=总和arr[i]%10; 进位=进位(温度); } 对于(inti=0;i,c++,algorithm,multiplication,C++,Algorithm,Multiplication,调用字符串对象 只要确保缓冲区没有被函数修改 编辑 或者,如果您需要接受一个char[],只需从中创建一个string。前提是您不需要修改C字符串(char数组),即它可以是const char[]或const char*,请使用std::string的方法: const char *c_string = str.c_str(); > > >编辑:,你的问题是,你根本不应该使用 STD::String 。在这种情况下,这就是如何用C字符串替换C++字符串: C字符串是以0结尾的char(或

调用字符串对象

只要确保缓冲区没有被函数修改

编辑


或者,如果您需要接受一个
char[]
,只需从中创建一个
string

前提是您不需要修改C字符串(char数组),即它可以是
const char[]
const char*
,请使用
std::string
方法:

const char *c_string = str.c_str();
<> > > >编辑:,你的问题是,你根本不应该使用<代码> STD::String 。在这种情况下,这就是如何用C字符串替换C++字符串:

  • C字符串是以0结尾的
    char
    (或
    const char
    )数组。通常,在某些情况下,它们会衰减为指针
  • 您可以使用
    中的
    strlen()
    函数获取C字符串的长度
  • 要将字符串相互追加,请使用
    strcat()
    strncat()
    函数。注意缓冲区大小和终止NUL字符的额外空间!
  • 等等

是否需要生成<代码> char */COD>作为最终结果,还是需要完全取消字符串的使用?是否需要使用<代码> char */COD>作为分配要求的一部分?我看不出其他理由避免使用C++字符串。最终结果必须是字符…中间结果如何?它们是否仍然保持代码< STD::STR?ing
?另外
char[]
是固定大小的(C++对可变大小数组的支持是一个编译器扩展)。您的意思是
char*
而不是
char[]
?@DiscreteMath'sFan,如果是这样的话……你的工作已经完成了……这是一个很好的答案,OP可以在最后阶段使用字符串,但听起来他可能想完全放弃使用字符串。@dasblinkenlight是的,当然,但那是一个不同的问题。现在他问“如何从
std::string
”中获取C字符串,而不是“如何避免大数相乘时使用字符串”。很抱歉误解…我需要用char[]替换字符串。您能解释一下吗more@DiscreteMath'sFan,您根本不允许使用字符串?或者这些函数只是被支持接受一个
char*
参数?