C++ 如何在数组中存储字符流?
我有一个字符流通过串口传输,就像这样C++ 如何在数组中存储字符流?,c++,arduino,C++,Arduino,我有一个字符流通过串口传输,就像这样 FILE1,FILE2,FILE3, char* myFiles[20]; boolean done = false; int fileNum = 0; int charPos = 0; char character; while (!done) { if (Serial.available()) { character = Serial.read(); if ((character == '\n') || (character =
FILE1,FILE2,FILE3,
char* myFiles[20];
boolean done = false;
int fileNum = 0;
int charPos = 0;
char character;
while (!done)
{
if (Serial.available())
{
character = Serial.read();
if ((character == '\n') || (character == '\r'))
{
done = true;
}
else if (character == ',')
{
myFiles[fileNum][charPos] = '\0';
fileNum++;
charPos = 0;
}
else
{
myFiles[fileNum][charPos] = character;
charPos++;
}
}
}
Serial.println(myFiles[0]);
我试着像这样读懂他们
FILE1,FILE2,FILE3,
char* myFiles[20];
boolean done = false;
int fileNum = 0;
int charPos = 0;
char character;
while (!done)
{
if (Serial.available())
{
character = Serial.read();
if ((character == '\n') || (character == '\r'))
{
done = true;
}
else if (character == ',')
{
myFiles[fileNum][charPos] = '\0';
fileNum++;
charPos = 0;
}
else
{
myFiles[fileNum][charPos] = character;
charPos++;
}
}
}
Serial.println(myFiles[0]);
当我试图像这样打印第一个值时
FILE1,FILE2,FILE3,
char* myFiles[20];
boolean done = false;
int fileNum = 0;
int charPos = 0;
char character;
while (!done)
{
if (Serial.available())
{
character = Serial.read();
if ((character == '\n') || (character == '\r'))
{
done = true;
}
else if (character == ',')
{
myFiles[fileNum][charPos] = '\0';
fileNum++;
charPos = 0;
}
else
{
myFiles[fileNum][charPos] = character;
charPos++;
}
}
}
Serial.println(myFiles[0]);
我得到了连续不断的字符流
我做错了什么?你做错的是没有为字符串分配任何内存 这里有一种方法可以做到这一点
#include <vector>
#include <string>
std::vector<std::string> myFiles;
std::string file;
bool done = false;
char character;
while (!done)
{
if (Serial.available())
{
character = Serial.read();
if ((character == '\n') || (character == '\r'))
{
done = true;
}
else if (character == ',')
{
myfiles.push_back(file);
file = "";
}
else
{
file += character;
}
}
}
Serial.println(myFiles[0].c_str());
与
错误的是没有为字符串分配任何内存 这里有一种方法可以做到这一点
#include <vector>
#include <string>
std::vector<std::string> myFiles;
std::string file;
bool done = false;
char character;
while (!done)
{
if (Serial.available())
{
character = Serial.read();
if ((character == '\n') || (character == '\r'))
{
done = true;
}
else if (character == ',')
{
myfiles.push_back(file);
file = "";
}
else
{
file += character;
}
}
}
Serial.println(myFiles[0].c_str());
与
std::vector和std::string在Arduino.Hmm上不可用,这很不幸。然后,快速的破解方法是替换
char*myFiles[20]代码>带有字符myFiles[20][100]代码>在原始代码中。更好的解决方案是使用malloc、realloc等类似C的代码,将其更改为char myFiles[20][100];如果你把它作为一个答案,那么我可以接受。std::vector和std::string在Arduino上不可用。嗯,这很不幸。然后,快速的破解方法是替换char*myFiles[20]代码>带有字符myFiles[20][100]代码>在原始代码中。更好的解决方案是使用malloc、realloc等类似C的代码,将其更改为char myFiles[20][100];有效,所以如果你加上这个作为答案,我可以接受。