如何打印带有值的字符串?

时间:2014-12-11 16:53:10

标签: c++

我正在尝试打印出存储在字符串中的地址值。编译后,它显示错误:no match for 'operator<<'。这是否意味着Address_list内部的内容不匹配?

#include <iostream>
#include <string>
#include <map>
#include "IPHost.h"

using namespace std;

int main() {
    map<string, IPHost> Address_list;
    Address_list["google.com"]=IPHost(74,125,225,20);
    cout << "google.com has address" << Address_list["google.com"] << endl; 
}

2 个答案:

答案 0 :(得分:3)

Address_list["google.com"]

将返回您之前存储的IPHost class实例。然后它会尝试将operator<<应用于它发出错误的实例。

这意味着您没有重载运算符&lt;&lt;为您的IPHost class

答案 1 :(得分:1)

正如其他人所说,你需要一个重载的运算符&lt;&lt;对于IPHost ......

......你会这样做:

inline std::ostream& operator<<(std::ostream& os, const IPHost& host)
{
   // code to stream the contents of IPHost out to os here
   // for example:
   os << "IPHost{" << host.address() << "}";

   // remember to return a reference to the ostream
   return os;
}