我在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不承认这一点。
由于
答案 0 :(得分:3)
您需要#include <string>
而不是string.h
(后者声明C字符串函数,如strstr
,strcmp
等。
如果您的操作数是std::string
,则<string>
可能还会解决<<
无法识别的问题。
修改:除此之外,if (tmp.empty())
通常优先于if(tmp.length() == 0)
。