【发布时间】:2012-11-04 14:53:16
【问题描述】:
我有一个 QString,我想将其转换为 char* 而不是 QChar*,因为我会将它传递给一个采用 char* 的方法,但是如果没有 const char,我将无法转换它*。例如我尝试过:
QString name = "name";
QByteArray byteArray = name.toUtf8();
myMailboxName = byteArray.constData();
和
QString name = "name";
QByteArray byteArray = name.toUtf8();
myMailboxName = byteArray.data();
其中 myMailboxName 是我班级中的私有 char*。但是我收到一个错误,因为它返回一个 const char* 并且无法将其分配给 char*。我该如何解决这个问题?
【问题讨论】:
-
不要。您将获得一个指向您可能无法修改的数据的指针,因此不要将其分配给
char*。将其分配给char const*。为什么要长期存储指针? -
@billz:不完全是一个骗局。似乎 Amre 想要一个指向可变字符的指针,而不是
const char* -
复制是什么?意思是。我不能使用 const char* 因为我有一个看起来像这样的类客户端:
class Client { public: Client(); void init(QString name); void sendMessage(QString mess); private: char *myMailboxName, buf[MSG_SIZE]; struct mq_attr attr; mqd_t mq_ownBox, mq_centralBox; };在程序启动之前我不知道 myMailboxName 的值,如果我刚刚创建了一个 const char* 它会在之后超出范围我从两端调用它的函数。 -
@Amre dup = 重复,或相同的问题