C++ 赋值崩溃

c++ assignment is crashing

本文关键字:崩溃 赋值 C++      更新时间:2023-10-16

我目前正在用 c++ 开发代码,为了更"C++",我将我的 char * 移动到字符串中。

顺便说一下,我确实有一些分配值的问题。

一旦我将 str 分配给 std::string,我的代码就会崩溃。

这是代码。

    std::string str;
    std::cout << "Friendlyn";
    str.assign(LIBMTP_Get_Friendlyname(PulsDeviceMngr->device));
    if(str.empty())
        PulsDeviceMngr->devicename = "Not Defined";
    else {
        PulsDeviceMngr->devicename = str ;
        str.clear();
    }

我也尝试替换:

    str.assign(LIBMTP_Get_Friendlyname(PulsDeviceMngr->device));

    str = LIBMTP_Get_Friendlyname(PulsDeviceMngr->device);

LIBMTP_Get_Friendlyname可以返回 NULL 是没有定义友好名称。

我迷路了..这是我第一次在c ++下使用字符串感谢您的帮助

确保定义了友好名称,以便它不会返回 NULL。还要确保 LIBMTP_Get_Friendlynam() 返回类型为字符串或字符*。

您的评论说:

似乎它来自NULL值的事实,我试图assign它。 但是我应该有一种方法来获取值并仅在 empte[原文如此]

你的问题说:

LIBMTP_Get_Friendlyname可以返回NULL没有定义Friendlyname

如果传递std::string::assign指针(如 NULL),它将尝试使用 C 字符串重载。C 字符串重载将从引用的数组中复制字符,直到达到空字符。但是你的代码告诉它 C 字符串位于地址 0,当取消引用时,将出现段错误。

解决方案是将""返回到之前返回 NULL 的位置。

这将确保始终有一个字符串要assign