gpt4 book ai didi

c++ - 如何重载 << 运算符以在 C++ 中打印数组的内容?

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:53 25 4
gpt4 key购买 nike

这是我的函数,当我运行程序时它崩溃了。我正在尝试打印出 char 数组的内容。如何重载此运算符以在不导致程序崩溃的情况下打印出数组的内容?

ostream& operator<< (ostream& out, MyString& obj){

//print out mystring contents

int i = 0;
while(i < obj.size)
{
out << obj.data[i];
i++;
}
}

这是我的数据成员:

int size;
int capacity;
char *data;

我做了以下修改,但它仍然崩溃:

int i = 0;
while(obj.data[i] != '\0')
{
out << obj.data[i];
i++;
}

return out;

最佳答案

如果你这样声明你的函数,你需要返回一些东西:

return out;

没有它,您就会有未定义的行为,一种可能的结果是程序崩溃。

请在学习过程中将编译器设置为将警告视为错误。

只是一个小提示,正如 NathanOliver 对您所说的那样,只要 obj.data 是一个以 null 结尾的字符串,ostreams 已经设置为打印字符数组,只要它们以 null 结尾,你可以这样做:

ostream& operator<< (ostream& out, MyString& obj){

//print out mystring contents
if (obj.data != nullptr) // you might need this test, you might not, depending on the internal logic of MyString
out << obj.data;

return out;
}

关于c++ - 如何重载 << 运算符以在 C++ 中打印数组的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45176095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com