我有以下內容,但我無法弄清楚我做錯了什么。我顯然在引數定義中有錯誤的型別,但我無法弄清楚正確的語法是什么。
dto.h
...
class Dto
{
public:
struct msg
{
int id;
byte type;
char text[100];
};
char* getText();
void setText(char* text);
private:
Dto::msg message;
...
檔案
...
char* Dto::getText()
{
return Dto::message.text;
}
void Dto::setText(char* text)
{
Dto::message.text = text;
}
...
當我編譯時,我得到:
Dto.cpp:85:30: error: incompatible types in assignment of 'char*' to 'char [100]' Dto::message.text = text;
uj5u.com熱心網友回復:
您不能分配給陣列。要將 C 字串復制到char陣列,您需要strcpy:
strcpy(Dto::message.text, text);
更好的是,使用strncpy以確保您不會溢位緩沖區:
strncpy(Dto::message.text, text, sizeof(Dto::message.text));
Dto::message.text[sizeof(Dto::message.text)-1] = 0;
請注意,如果源字串太大,您需要在末尾手動添加一個空位元組,因為strncpy在這種情況下不會空終止。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352522.html
