Wij*_*els 5 c++ file-io arduino
我试图打开一个文件,我将名称计算成一个字符串.但是,它只是给我编译错误,如图所示.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我是一个java人,所以我不明白为什么这不起作用.我尝试了一些字符串对象方法,但似乎没有工作.我在arduino编程方面有点新,但我更了解java.这个for循环的要点是每次arduino重新启动时创建一个新文件.
iag*_*een 11
SD.open期望一个字符数组而不是一个String,你需要首先使用该toCharArray方法转换它.尝试
char filename[temp.length()+1];
temp.toCharArray(filename, sizeof(filename));
if(!SD.exists(filename)) {
...
}
Run Code Online (Sandbox Code Playgroud)
完成代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
你会发现许多函数采用char数组而不是字符串.