0

我正在制作一个rpg。当我输入代码(如下所示)时,我收到此错误。我究竟做错了什么?

main.cpp|15|错误:从 'const char*' 到 'char' 的无效转换 [-fpermissive]|

#include <iostream>
#include <stdio.h>
#include <string>
#include <windows.h>

using namespace std;

int mainLoop()
{
    char arr[4] = {'x', 'x', 'x', 'x'};
    int pp = 1;
    bool end = false;
    string inp;

    arr[pp] = "S";

    while(end == false)
    {
        cout << arr << endl;
        cout << ">>: " << endl;
        cin >> inp;

        if(inp == "move")
        {
            pp++;
        }

    }
}

int main()
{
    mainLoop();

    return 0;
}

编辑:

谢谢!但现在我将旧的 pp(玩家位置)保留为 S。我尝试制作一个新变量 ppold 并将其更改为 pp-1 到 x,但没有任何反应。

4

2 回答 2

6
arr[pp] = "S";  //incorrect

应该

arr[pp] = 'S';  //correct

"S"is的类型char[2]不能转换char为 的类型arr[pp]。但是类型'S'chararr[pp]char也是)类型匹配的。

于 2012-08-17T10:01:52.080 回答
2

"S"(双引号)表示它是一个空终止的字符串,它是{'S', '\0'}在展开时。

'S'(单引号)表示它是一个 char 字符,它是{'S'}在展开时。

arr[X] 在您的示例中是字符数组中的一个字符(将其视为单引号表达式,如 'a')

您不能分配{'S', '\0'}{'a'}

是有关情况的更多信息。

于 2012-08-17T10:06:26.243 回答