Как преобразовать строку в символ - PullRequest
0 голосов
/ 19 апреля 2020

Я в классе программирования для начинающих, и для нашего задания нас просят преобразовать строку букв / слов в шрифт Брайля. По какой-то причине я не могу понять, как сделать мою строку отдельной от ввода и вывода каждого символа, который связан с определением Брайля.

Вот часть моего кода:

#include <iostream>
#include <cstring>
using namespace std;
int main(){

    string str1;
    getline(cin, str1);

int n = str1.length();
char cstr[n + 1];
strcpy(cstr, str1.c_str());

   if( cstr == 'a')
       cout << "|--|\n|* |\n|  |\n|  |\n|--|";
   if( cstr == 'b')
       cout << "|--|\n|* |\n|* |\n|  |\n|--|";
}

Я пробовал искать разные способы онлайн для преобразования строк в char. Однако ни один из них, похоже, не работает над моим кодом. Я продолжаю получать сообщение: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
Я не знаю, как решить эту проблему. Любая помощь будет оценена.

Примечание: это не мой полный код. Я просто хотел показать ту часть, которая доставляет мне проблемы.

1 Ответ

2 голосов
/ 19 апреля 2020

Вам не нужен временный массив строк C cstr, все, что вам нужно сделать, это использовать на основе диапазона for l oop до l oop над каждым символом в str1:

for (char c : str1)
{
    switch (c)
    {
    case 'a':
        cout << "|--|\n|* |\n|  |\n|  |\n|--|";
        break;

    // etc. for the remaining characters...
    }
}

Если вам не разрешено использовать циклы на основе диапазона, вы можете использовать итераторы:

for (auto it = str1.begin(); it != str1.end(); ++it)
{
    char c = *it;

    // ...
}

Или Индекс старой школы:

for (size_t i = 0; i < str1.length(); ++i)
{
    char c = str1[i];

    // ...
}

Любая хорошая книга (или вообще любая книга для начинающих, даже плохая), учебник или класс должны были показать хотя бы одно из перечисленных выше .

...