我不会粘贴整个程序,只会包含所包含的文件和错误,因为我非常肯定,错误就在于它!
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>
嗯,只有一个区别,我在Visual C ++ 2006中添加了#include <String>
,这个特殊文件减少了错误,读作
错误C2678:binary'!=':没有运算符定义,它接受type()'class std :: basic_string,class std :: allocator&gt;'的左手操作数 (或者没有可接受的转换)
我在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中出了什么问题吗?
答案 0 :(得分:4)
error C2065: 'to_string' : undeclared identifier
std::to_string()
是VS2010支持的C ++ 11功能。任何早期版本的Microsoft编译器都不支持它。另一种选择是boost::lexical_cast
。
error C2208: 'class std::vector' : no members defined using this type
C ++ 11和VS2010允许使用>>
但是C ++ 11之前没有。需要改为:
vector <vector <float> > distOfSectionPoint,
//^ space here
答案 1 :(得分:4)
假设to_string
是std::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功能。