C++ “如何修复”;“没有合适的转换函数”;“字符串”;至;常量字符*”;是否存在;?

C++ “如何修复”;“没有合适的转换函数”;“字符串”;至;常量字符*”;是否存在;?,c++,string,syntax,char,C++,String,Syntax,Char,我不太确定如何做到这一点,我已经搜索并尝试了许多不同的东西,但我就是不能让它工作?strcpy(主机、数据);是什么给了我错误 char host[60] = "www.yahoo.com"; void loop() { String content = ""; char character; while (Serial.available()) { character = Serial.read(); content.concat(ch

我不太确定如何做到这一点,我已经搜索并尝试了许多不同的东西,但我就是不能让它工作?strcpy(主机、数据);是什么给了我错误

char host[60] = "www.yahoo.com";

void loop() {
    String content = "";
    char character;
    while (Serial.available()) {
        character = Serial.read();
        content.concat(character);
    }
    if (content != "") {
        String CMD = getValue(content, '|', 0);
        String DATA = getValue(content, '|', 1);

        if (CMD == "SSID")
        {
            Serial.println("Your CMD is:" + CMD + " And your DATA is:" + DATA);
        }
        else if (CMD == "PASS")
        {
            Serial.println("Your CMD is:" + CMD + " And your DATA is:" + DATA);
        }
        else if (CMD == "HOST")
        {
            Serial.println("Your CMD is:" + CMD + " And your DATA is:" + DATA);

            strcpy(host, DATA);
        }
    }
    delay(100);
}

如果
String
,是
std::String
,您可以

strcpy(host, DATA.c_str());
例如,如果它是一个自定义类

class String
{
char buffer[20];

//add a method c_str() for example like the std::string does

const char * c_str() { return buffer; }

//or just go yolo and overload the operator const char * like a boss

operator const char *() { return buffer;  }

};

您现在所要做的就是
strcpy(buff,DATA)
并且将使用
操作符const char*()

字符串是std::String吗?自定义类?什么是
String
?它当然不是
char*
,而这正是strcpy所期望的。您需要将
字符串
转换为
常量字符*
,可能是通过其成员函数。例如,
std::string
有一个
c_str()
成员函数可以实现这个功能;但是我不能做strcpy(主机,数据)@因为C++是强类型的,而<代码>数据类型>代码>是代码>字符串ch> <代码>或<代码> const char */COD>,而且也没有从<代码>字符串 >到“代码> > char *<代码>或<代码> const char */COD>的隐式转换。因为他们可能会在你最不期待的时候出现。在C++11中,您可以使它们显式地,或者只使用
C_str()
成员函数。是的,忘了这一点。现在您需要一个强制转换的strcpy(buff,(const char*)数据),因为它不会隐式地转换;)@vsoftco不是真的,因为strcpy将常量字符*作为第二个参数。然后转换为
常量字符*
,对不起。但如果转换运算符为显式,则肯定需要显式强制转换,请参阅。