c ++ to_string未在此范围错误 [Windows + Devcpp 环境] 中声明
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 In function 'int karatsuba(int, int)': 7 25 C:\用户\AKuro\桌面\C++\分而治之\卡拉苏巴.cpp [错误] "to_string"未在此范围内声明
9 23 C:\用户\AKuro\桌面\C++\分而治之\卡拉苏巴.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}"到二进制"运算符%"的操作数无效
我尝试了通过谷歌搜索找到的方法,但似乎都没有奏效。这是我已经尝试过的:
将 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 的一个特性。因此,请确保在生成文件或 IDE 中设置 -std=c++11。
2)strlen()
是用cstring
声明的,而不是string
。这里更好的方法是使用类似int len_x = sx.size();
的东西,并且对另一个字符串使用类似的东西。
3)返回pow()
类型为浮点型或双倍型。所以你需要像这样巧妙地投射它:int b = x % static_cast<int>(pow(10, n_by_2));
.您需要对所有使用pow()
并将结果分配给int
变量的表达式执行此操作。实际上,比强制转换更好的是编写自己的简单intpow()
函数,这并不难做到(它是如此简单,以至于标准似乎跳过了它:-))。
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 在Windows中以.exe的形式运行c++
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 无法在windows控制台中为C++程序提供必要的输入
- 在Windows中查找扬声器输出的当前音量级别
- Windows.h与GLFW.h的接口
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- c ++ to_string未在此范围错误 [Windows + Devcpp 环境] 中声明