Visual studio错误C2784

时间:2013-12-26 07:50:21

标签: c++ visual-studio-2012

我在Linux上使用g ++编译器的简单代码有问题,但我在Windows上使用Visual Studio professional 2012时遇到了很多错误。

代码:

string tmp = *path;
  if(tmp.length() == 0) 
    *path = Name_;
  else
    *path = Name_ + '.' + tmp;

错误:

Error   1   error C2784: 'std::_String_iterator<_Mystr> std::operator +(_String_iterator<_Mystr>::difference_type,std::_String_iterator<_Mystr>)' : could not deduce template argument for 'std::_String_iterator<_Mystr>' from 'char'

程序指向+运算符。 我的包括:

#include <iostream>
#include <stdio.h>
#include <string.h>

另外我的cout&lt;&lt;。运算符&lt;&lt;虽然包括iostream,但Visual Studio不承认这一点。

由于

1 个答案:

答案 0 :(得分:3)

您需要#include <string>而不是string.h(后者声明C字符串函数,如strstrstrcmp等。

如果您的操作数是std::string,则<string>可能还会解决<<无法识别的问题。

修改:除此之外,if (tmp.empty())通常优先于if(tmp.length() == 0)