Arduino加入字符串和* char

时间:2015-07-24 15:27:02

标签: arduino concatenation arduino-uno arduino-ide

我是arduino的新手,我偶然发现了一个问题。我想通过我的esp8266发送数据到我的php页面。但我不知道如何使用此GET请求加入我的数据。

这是我的代码:

String card = "2-3d-fg-d6-12-68-32-3f-35-45-42-53-2a-3";
char *hello = "GET /insert.php?card="+card+"&error=1 HTTP/1.1\r\nHost: testsite.com\r\n\r\n"; 
wifi.send((const uint8_t*)hello, strlen(hello));

这就是我在arduino控制台中得到的结果:

  

错误:初始化时无法将'StringSumHelper'转换为'char *'   在初始化

中无法将'StringSumHelper'转换为'char *'

2 个答案:

答案 0 :(得分:5)

您可以使用std::string::c_str()函数,该函数返回指向const char缓冲区的指针:

String card = "2-3d-fg-d6-12-68-32-3f-35-45-42-53-2a-3";
char *prefix = "GET /insert.php?card=";
char *postfix ="&error=1 HTTP/1.1\r\nHost: testsite.com\r\n\r\n"; 

String url = prefix +card+ postfix;
const char *url_complete = url.c_str();
//...

另请参阅相关帖子:How concatenate a string and a const char?

答案 1 :(得分:0)

使用c_str()函数,该函数返回指向const char的指针

String id = "14";
char *hello = "GET /api/weather/specific.php?id=";
char *hello2 = " HTTP/1.1\r\nHost: evive.000webhostapp.com\r\nConnection: close\r\n\r\n";
String url = hello + id + hello2;

const char *send_url = url.c_str();
wifi.send((const uint8_t*)send_url, strlen(send_url));  // For Arduino Mega and ESP8266