如何检测NULL字符串或不是NULL字符串

时间:2018-11-03 17:06:08

标签: c++ queue

我想打印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,然后收到错误消息。

2 个答案:

答案 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::stringNULL测试它。