注册 登录
编程论坛 C++教室

帮看下这个警告时什么意思

sudong0913 发布于 2010-09-10 23:04, 536 次点击
H:\temp\vc6++\df\dfa.cpp(25) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_t
raits<char>,std::allocator<char> > const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information
H:\temp\vc6++\df\dfa.cpp(25) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<
char>,std::allocator<char> > &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information
h:\program files\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >
 >::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
h:\program files\microsoft visual studio\vc98\include\vector(52) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >
 >::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
h:\program files\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >
 >::~vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
Linking...
///////////////////////////////////////////////////////////////////
#include<iostream>
#include<vector>
#include<cctype>
#include<string>
using namespace std;
vector<string> split(const string & x)
{
    vector<string> v;
    typedef vector<string>::size_type string_size;
    string_size i=0;
    while(i!=x.size())
    {
        while(i!=x.size()&&isspace(x[i]))
            ++i;
        string_size j=i;
        while(j!=x.size()&&!isspace(x[j]))
            ++j;
        if(i!=j)
        {
            v.push_back(x.substr(i,j-i));
            i=j;
        }
    }
    return v;
}
void main()
{
}

[ 本帖最后由 sudong0913 于 2010-9-10 23:05 编辑 ]
3 回复
#2
staor2010-09-11 02:14
头文件不该是
#include   <iostream>
#include   <vector>
#include   <string>
这样的吧?应该是:
#include   <iostream.h>
#include   <vector.h>
#include   <string.h>
吧。

你改一下再试试

大概判断应该是调试时一些类调用后导致名字过长,超过了255个字符,产生,

今天网上找了下,问题是因为VC6对STL的一些不完全支持造成,手工屏蔽就可以。

方法为在源文件头部加入一下预编译代码

#ifdef WIN32
#pragma warning (disable: 4514 4786)
#endif
或者

这是因为VC6对新标准支持力度不够,STL中的map等等的实现中名字过长,被VC6截断了.
可以用#pragma   warning   (disable:4786)消除相应的警告.

问题解决。
#3
x_wangyue2010-09-13 19:59
#pragma warning(disable:4786)//加上这句就行了
#include<iostream>
#include<vector>
#include<cctype>
#include<string>
using namespace std;
vector<string> split(const string & x)
{
    vector<string> v;
    typedef vector<string>::size_type string_size;
    string_size i=0;
    while(i!=x.size())
    {
        while(i!=x.size()&&isspace(x[i]))
            ++i;
        string_size j=i;
        while(j!=x.size()&&!isspace(x[j]))
            ++j;
        if(i!=j)
        {
            v.push_back(x.substr(i,j-i));
            i=j;
        }
    }
    return v;
}
void main()
{
}

#4
傲剑2010-09-13 20:26
回复 2楼 staor
C++头文件不用加.h吧
1