C++ ';stoi&x27;和';到字符串';不是';std&x27;

C++ ';stoi&x27;和';到字符串';不是';std&x27;,c++,compiler-errors,C++,Compiler Errors,我有一些代码,它相当大,所以我将在这里创建它的快照: int l = 3; vector<int> weights; void changeWeights(int out){ for (int i = 0; i < weights.size(); i++){ int w = std::stoi(std::to_string(weights[i])) - out*std::stoi(std::to_string(weights[i]

我有一些代码,它相当大,所以我将在这里创建它的快照:

int l = 3;
vector<int> weights;   

void changeWeights(int out){
    for (int i = 0; i < weights.size(); i++){
        int w = std::stoi(std::to_string(weights[i])) -
        out*std::stoi(std::to_string(weights[i]));
        if (w < -l){
          w = -l;
        } else if(w > l){
            w = l;
        }
        weights.assign(i, w);
    }
}
我读过一些类似的查询,其中的答案是在编译时添加-std=c++11或-std=c++0x,这两种解决方案都不起作用。另一个解决方案建议编译器版本中存在错误,但我不认为这不是我正在使用的编译器。我在64x Apple Macbook Pro上使用的是g++(GCC)5.0.0 20141005(实验)版本。

在这部分代码中使用
stoi()
to_string()
非常奇怪,完全没有必要。你可以简单地写

int w = weights[i] - out * weights[i];

要使用,你需要有一个合适的

#include <string>
#包括
语句和c++11语言选项集(请参见上面文档参考的链接)。

在这部分代码中使用
stoi()
to_string()
非常奇怪,完全没有必要。你可以简单地写

int w = weights[i] - out * weights[i];

要使用,你需要有一个合适的

#include <string>
#包括

语句和c++11语言选项集(请参见上面文档参考的链接)。

是否包含
?stdio的原型是:int-stoi(const-std::string&str,std::size\u t*pos=0,int-base=10);是的,我已改为Linux虚拟机上的编译器,这是一个临时解决方案,没有时间解决此问题,但稍后会再讨论。@LPs OP的代码中没有关于此问题的错误。是否包含
?stdio的原型是:int-stoi(const std::string&str,std::size_t*pos=0,int base=10);是的,我已改为Linux虚拟机上的一个编译器,这是一个临时解决方案,实际上没有时间解决此问题,但稍后将返回。@LPs OP的代码中没有关于此问题的错误。