我想打印productCode,但是在while循环中,但是结束时我收到错误消息。
void Queue::listProduct(Queue* _root)
{
Queue *iter;
iter = _root;
while (iter->productCode != "")
{
cout << iter->productCode << endl;
iter = iter->next;
}
}
productCode是字符串 首个productCode =“ 10”, 第二productCode =“ 20”, 。 。 。 最后一个productCode =“ 60”
我看到60,然后收到错误消息。
答案 0 :(得分:1)
您的循环不应检查productCode
是否为空。它应该检查iter
本身是否为null。链表的结尾由空指针指示。
void Queue::listProduct(Queue* _root)
{
Queue *iter = _root;
while (iter)
{
cout << iter->productCode << endl;
iter = iter->next;
}
}
由于未正确停止循环,因此您无法到达列表的末尾,这就是为什么在尝试访问无效节点的productCode
时崩溃的原因。
答案 1 :(得分:1)
根据您的问题的标题,比较C样式字符数组(字符串)是否为空:
rasterOptions(maxmem=1e09)
比较char * p_text[] = "Hello World!";
if (p_text == nullptr) // Check the pointer for null.
{
//...
}
if (p_text[0] == '\0') // Check if string is empty.
(为空):
std::string
或
std::string productCode;
if (productCode.empty())
if (productCode.length() == 0)
不是指针,因此不应该为std::string
或NULL
测试它。