使用Arduino将String转换为const char*类型

Cau*_*tic 10 c++ casting arduino

我正在使用Arduino库.我想记录传感器中的一些数据,日期时间标记它并将其写入SD卡.

要构建我尝试过的文本文件名

    String dataFileName = String(String(sedClock.getTime().year(),DEC) + 
                         String(sedClock.getTime().month(),DEC) + 
                         String(sedClock.getTime().day(),DEC) + 
                         String(sedClock.getTime().hour(),DEC) + 
                         String(sedClock.getTime().minute(),DEC) + 
                         String(sedClock.getTime().second(),DEC) + '_log.txt');
Run Code Online (Sandbox Code Playgroud)

然后我想使用登录到该文件

      pinMode(SD_PIN,OUTPUT);
      dataFile = SD.open(dataFileName,FILE_WRITE);
Run Code Online (Sandbox Code Playgroud)

但我明白了

    no matching function call to SDClass::open(String&, int) 
    candidates are: File SDClass::open(const char*,uint_8)
Run Code Online (Sandbox Code Playgroud)

但似乎Arduino字符串没有相应的

    (const char *) dataFileName.c_str()
Run Code Online (Sandbox Code Playgroud)

所以我无法弄清楚如何进行正确的转换

任何帮助将不胜感激.

Cau*_*tic 17

谢谢你的帮助.解决方案是

    char __dataFileName[sizeof(dataFileName)];
    dataFileName.toCharArray(__dataFileName, sizeof(__dataFileName));

    pinMode(SD_PIN,OUTPUT);
    dataFile = SD.open(__dataFileName,FILE_WRITE);
Run Code Online (Sandbox Code Playgroud)

  • 使用str.length()+ 1获取长度String.例如:char __dataFileName [dataFileName.length()+ 1]; dataFileName.toCharArray(__ dataFileName,sizeof(__ dataFileName)); (7认同)