AIlaopo 发表于 2018-4-25 17:42:39

关联容器之pair问题求解

#include<iostream>
#include<utility>

using namespace std;

int main()
{
        typedef pair<string,string> Author;
        string tn;
        Author author("LiBai","DuFu");
        if(author.first == "LiBai" && author.second == "DuFu")
                tn ="ShiRen";
        system("pause");
        return 0;
}

编译报错了 :

1>正在对“Debug\8_0.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1>Associative_containers.cpp
1>c:\users\wfd-lzf\documents\visual studio 2010\projects\cpppri\8_0\8_0\associative_containers.cpp(11): error C2678: 二进制“==”: 没有找到接受“std::string”类型的左操作数的运算符(或没有可接受的转换)
1>          可能是“内置 C++ operator==(const char , const char )”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(470): 或       “bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(475): 或       “bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(481): 或       “bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(408): 或       “bool std::operator ==(const std::error_code &,const std::error_condition &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(416): 或       “bool std::operator ==(const std::error_condition &,const std::error_code &)”
1>          尝试匹配参数列表“(std::string, const char )”时
1>c:\users\wfd-lzf\documents\visual studio 2010\projects\cpppri\8_0\8_0\associative_containers.cpp(11): error C2678: 二进制“==”: 没有找到接受“std::string”类型的左操作数的运算符(或没有可接受的转换)
1>          可能是“内置 C++ operator==(const char , const char )”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(470): 或       “bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(475): 或       “bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(481): 或       “bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(408): 或       “bool std::operator ==(const std::error_code &,const std::error_condition &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\system_error(416): 或       “bool std::operator ==(const std::error_condition &,const std::error_code &)”
1>          尝试匹配参数列表“(std::string, const char )”时
1>
1>生成失败。
1>
1>已用时间 00:00:00.92
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

没有==操作符吗?

御笔剑客 发表于 2018-4-25 17:52:10

(author.first == "LiBai" && author.second == "DuFu")    first和second返回的不是字符串类型,比较类型错误

AIlaopo 发表于 2018-4-25 18:04:11

御笔剑客 发表于 2018-4-25 17:52
(author.first == "LiBai" && author.second == "DuFu")    first和second返回的不是字符串类型,比较类型 ...

问题 解决了,不是这里出错,是少了 头文件,多谢!
页: [1]
查看完整版本: 关联容器之pair问题求解