如何将字符串转换为字符

How to convert a string to char

我是初学者编程 class,对于我们的作业,我们被要求将 letters/words 的字符串转换为盲文。 出于某种原因,我似乎无法弄清楚如何让我的字符串将我的输入和输出与其盲文定义相关联的每个字符分开。

这是我的部分代码:

#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|--|";
}

我尝试在网上查找不同的方法将字符串转换为字符。但是,其中 none 似乎适用于我的代码。 我不断收到消息:error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
我不知道如何解决这个问题。任何帮助将不胜感激。

注意:这不是我的完整代码。我只是想展示给我带来问题的部分。

您不需要临时的 C 风格字符串数组 cstr,您需要做的就是使用 range-based for loop 遍历 str1 中的每个字符:

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

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

如果不允许使用基于范围的 for 循环,则可以使用迭代器:

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];

    // ...
}

任何 good book(或者任何初学者书籍,甚至是糟糕的书籍)、教程或 class 都应该至少显示上述内容之一。