[英]c++ to_string was not declared in this scope error [Windows + Devcpp environment]
我正在尝试使用Devcpp ide在Windows 10上的c ++中实现Karatsuba乘法算法。 这是相同的代码:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int karatsuba(int x, int y){
string sx = to_string(x);
string sy = to_string(y);
int len_x = strlen(sx);
int len_y = strlen(sy);
if (len_x == 1 && len_y == 1)
return x * y;
else{
int n = max(len_x, len_y);
int n_by_2 = n / 2;
int a = x / pow(10, n_by_2);
int b = x % pow(10, n_by_2);
int c = y / pow(10, n_by_2);
int d = y % pow(10, n_by_2);
int ac = karatsuba(a, c);
int bd = karatsuba(b, d);
int ad_plus_bc = karatsuba(a+b, c+d);
int prod = ac * pow(10, n_by_2) + (ad_plus_bc * pow(10, n_by_2)) + bd;
return prod;
}
}
int main(){
cout<<karatsuba(45, 45);
}
当我运行该程序时,出现以下错误:
C:\\ Users \\ AKuro \\ Desktop \\ C ++ \\ Divide and Conquer \\ karatsuba.cpp在函数'int karatsuba(int,int)'中:7 25 C:\\ Users \\ AKuro \\ Desktop \\ C ++ \\ Divide and Conquer \\ karatsuba.cpp [错误]未在此范围内声明“ to_string”
9 23 C:\\ Users \\ AKuro \\ Desktop \\ C ++ \\ Divide and Conquer \\ karatsuba.cpp [错误]在此范围内未声明“ strlen”
18 29 C:\\ Users \\ AKuro \\ Desktop \\ C ++ \\ Divide and Conquer \\ karatsuba.cpp [错误]类型为'int'和'__gnu_cxx :: __ promote_2 :: __ type {aka double}'的无效操作数到二进制'operator%'
20 29 C:\\ Users \\ AKuro \\ Desktop \\ C ++ \\ Divide and Conquer \\ karatsuba.cpp [错误]类型为'int'和'__gnu_cxx :: __ promote_2 :: __ type {aka double}'的无效操作数对二进制'operator%'
我尝试了通过谷歌搜索找到的方法,但似乎没有一个起作用。 这是我已经尝试过的:
将std与to_string一起使用,例如std :: to_string
我什至尝试过这种方法
int i = 1212;
stringstream ss;
ss << i;
string s=ss.str();
但似乎都无法正常工作,而且我找不到针对此特定环境(Windows 10 + Devcpp)的任何答案。 这真的让我烦恼。 请您帮我一下。
这里有多个错误:
1) to_string()
是c ++ 11的功能 。 因此,请确保在makefile或IDE中设置-std = c ++ 11。
2) strlen()
是在cstring
声明的,而不是在string
声明的。 更好的方法是使用类似int len_x = sx.size();
,其他字符串相似。
3) pow()
)的返回类型为float或double 。 因此,您需要像这样显式地转换它: int b = x % static_cast<int>(pow(10, n_by_2));
。 您需要对所有使用pow()
并将表达式分配给int
变量的表达式执行此操作。 实际上,编写自己的简单intpow()
函数要比强制转换更好,这并不难做到(它是如此简单,以至于该标准似乎已经跳过了它:-))。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.