5

名前を文字列に計算するファイルを開こうとしています。ただし、示されているようにコンパイルエラーが発生するだけです。

for(int i=1;;i++)
{
   String temp = "data";
   temp.concat(i);
   temp.concat(".csv");
   if(!SD.exists(temp))//no matching function for call to sdclass::exists(String&)
   {
      datur = SD.open(temp,FILE_WRITE);
   }
}

私はJavaの人なので、なぜこれが機能しないのかわかりません。いくつかの文字列オブジェクト メソッドを試しましたが、どれも機能していないようです。私は arduino プログラミングに少し慣れていませんが、Java についてはよく理解しています。この for ループのポイントは、arduino が再起動するたびに新しいファイルを作成することです。

4

1 に答える 1

12

SD.openの代わりに文字配列が必要な場合は、最初にメソッドStringを使用して変換する必要があります。toCharArray試す

  char filename[temp.length()+1];
  temp.toCharArray(filename, sizeof(filename));
  if(!SD.exists(filename)) { 
   ...
  }

完成したコード:

for(int i=1;;i++)
{
   String temp = "data";
   temp.concat(i);
   temp.concat(".csv");
   char filename[temp.length()+1];
   temp.toCharArray(filename, sizeof(filename));
   if(!SD.exists(filename))
   {
      datur = SD.open(filename,FILE_WRITE);
      break;
   }
}

多くの関数が文字列の代わりに char 配列を取ることがわかります。

于 2013-01-22T20:59:58.883 に答える