Я разрабатываю проект на своей плате ардуино, для своего проецирования идеи я написал код в C++
. Но некоторые библиотечные файлы и функции не были найдены в IDE arduino, которые, насколько мне известно, находятся в C++
.
Я прилагаю код ниже. Я хочу преобразовать весь код в arduino, в котором только convertToEnglish
останется как функция в arduino. Я пытался заменить заголовочные файлы и другие функции строковой библиотекой и другим заголовочным файлом Stream.h
, но почти все закончилось напрасно. Следовательно, чтобы преодолеть это, пожалуйста, процитируйте мне решение. Я попытался использовать Standard C++, как указано в кавычках, но все же функция getline сообщает об ошибке, указывающей, что cin не был объявлен в сфера.
#include <StandardCplusplus.h>
#include <system_configuration.h>
#include <unwind-cxx.h>
#include <utility.h>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string convertToEnglish(string morse, string const morseCode[]);
int main()
{
string input = "";
cout << "Please enter a string in morse code: ";
getline(cin, input);
string const morseCode[] = {".-", "-...", "-.-.", "-..", ".", "..-.",
"--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-",
".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
cout << convertToEnglish(input, morseCode) << endl;
return 0;
}
string convertToEnglish(string morse, string const morseCode[])
{
string output = "";
string currentLetter = "";
istringstream ss(morse);
size_t const characters = 26;
while(ss >> currentLetter)
{
size_t index = 0;
while(currentLetter != morseCode[index] && index < characters)
{
++index; //increment here so we don't have to decrement after the loop like if we put in the condition
}
output += 'A' + index;
}
return output;
}
сообщение об ошибке: Arduino: 1.6.8 (Windows 8.1), плата: «Arduino/Genuino Uno»
E:\brain\arduino\sketch_mar15a\Blink\Blink\Blink.ino: В функции ‘int main()’:
Мигание: 19: ошибка: «cin» не был объявлен в этой области
getline(cin, input);
^
статус выхода 1 ‘cin’ не был объявлен в этой области
В этом отчете будет больше информации, если в меню «Файл» -> «Настройки» включена опция «Показать подробный вывод во время компиляции».
в чем именно проблема?: — person satabios schedule 18.04.2016
Файлы заголовков string и sstream не могут быть найдены в arduino ide. Если нет, то другие заголовочные файлы используются для получения того же вывода. — person satabios schedule 18.04.2016
Возможный дубликат векторов в Arduino — person satabios schedule 18.04.2016
Вы должны поменять порядок тестов currentLetter
: до index < characters
и после currentLetter != morseCode[index]
. В противном случае вы можете получить доступ к morseCode[26]
— person satabios schedule 19.04.2016
Для меня непонятно, что можно использовать, а что нельзя.
Предположим, что вы не можете использовать
std::vector
, но можете использовать старую добрую функцию строки C (char *) и функции ввода/вывода, я подготовил следующий пример в стиле CЕсли вы можете использовать
std::vector
илиstd::string
, можно сделать действительно проще.p.s.: извините за мой плохой английский