c – cout的运算符问题

我有一个简单的包类,它被重载,所以我可以简单地输出包数据cout<<包裹名字.我还有两种数据类型,名称是字符串,运费是双倍的.

protected:
    string name;
    string address;
    double weight;
    double shippingcost;
ostream &operator<<( ostream &output, const Package &package )
{
    output << "Package Information ---------------";
    output << "Recipient: " << package.name << endl;
    output << "Shipping Cost (including any applicable fees): " << package.shippingcost;

问题出现在第4行(输出<<“收件人:......).我收到错误”no operator“<<”匹配这些操作数“.但是,第5行很好. 我猜这与数据类型是包名称的字符串有关.有任何想法吗?

最佳答案
您必须包含错误的字符串标头. < string.h中>和< string>是两个完全不同的标准标题.

#include <string.h> //or in C++ <cstring>

这是针对C风格的以null结尾的char数组(如strcpy,strcmp等)的函数. cstring reference

#include <string>

这是针对std :: string的. string reference

转载注明原文:c – cout的运算符问题 - 代码日志