0

我不会粘贴整个程序,而只会粘贴包含的文件和错误,因为我很确定,错误本身就在那里!

VS 2010 中包含的文件

#include <cstdlib>
#include <windows.h>
#include "iostream"
#include "conio.h"
#include "vector"
#include "math.h"
#include <string.h>
#include <bitset>

Visual C++ 6.0 中包含的文件

#include <cstdlib>
#include <windows.h>
#include "iostream"
#include "conio.h"
#include "vector"
#include "math.h"
#include <string.h>
#include <bitset>
#include <String>

好吧,只有一个区别,我#include <String>在 Visual C++ 2006 中添加,这个特定的文件减少了读取为的错误

错误 C2678: 二进制 '!=' : 未定义运算符,它采用 () 'class std::basic_string,class std::allocator >' 类型的左操作数(或没有可接受的转换)

我在 VS2006 中仍然面临的其他主要错误是

线 :str.append(to_string((long double)(value)));

错误:error C2065: 'to_string' : undeclared identifier

线:vector <vector <float>> distOfSectionPoint, momentAtSectionPoint, preFinalMoment, finalMoments, momentAtSectionPtOnPtLoadProfile ;

错误:error C2208: 'class std::vector' : no members defined using this type

谁能解释 Visual C++ 2006 中出了什么问题?

4

2 回答 2

4
错误 C2065:“to_string”:未声明的标识符

std::to_string()是 VS2010 支持的 C++11 特性。任何早期版本的 Microsoft 编译器都不支持它。另一种选择是boost::lexical_cast.


错误 C2208:“类 std::vector”:没有使用此类型定义的成员

C++11 和 VS2010 允许使用,>>但 C++11 之前不允许使用。需要改为:

vector <vector <float> > distOfSectionPoint,
                    //^ space here
于 2012-08-28T11:41:33.093 回答
4

假设to_stringstd::to_string,那么这是一个 C++11 函数,在较旧的编译器中不可用。你可以拼凑一些大致相当的东西,比如

template <typename T>
std::string nonstd::to_string(T const & t) {
    std::ostringstream s;
    s << t;
    // For bonus points, add some error checking here
    return s.str();
}

涉及的错误vector是由两个右尖括号引起的,较旧的编译器会将其解释为单个>>标记。在它们之间添加一个空格:

vector<vector<float> >
                    ^

由于没有 Visual C++ 2006,因此不太清楚您使用的是哪个编译器。如果您实际上是指 Visual C++ 6.0(从 1998 年开始),那么您可能注定要失败。从那时起,有两次主要的语言修订,使得编写该编译器和现代编译器都支持的代码变得非常困难。如果您的意思是 2005 或 2008,那么请小心避免使用 C++11 功能。

于 2012-08-28T11:43:59.827 回答