[求解析]string s(s2,pos2)初始化式解决方案

[求解析]string s(s2,pos2)初始化式
各位大侠:
        我用的版本是VC6.0,一边看《C++ Primer》,一边操作。在使用string s(s2,pos2)初始化式时出现编译错误,究竟时版本问题?还是缺少头文件?还是......?求解析,谢谢各位大侠。代码如下:


#include <iostream>
//#include <cctyep>
#include <vector>
#include <list>
#include <deque>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
string s("love!");
string s1(s,2);                   //error C2664:
string s2(s,0,2);
string s3(s,0,8);
cout << "s2(s,0,2)=s2= " << s2 << endl;
cout << "s3(s,0,8)=s3= " << s3 << endl;
return 0;
}


error C2664: '__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(const char *,unsig
ned int,const class std::allocator<char> &)' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
------解决思路----------------------
报错是类型转换失败,感觉是VS版本低造成的,升级到VS2008或VS2010应该不会报这个错了
------解决思路----------------------
你把是string s1(s,2)改为string s1(s,0,2)就好了。你妹发现你代码写错了吗?