C++ C++;错误:从';int';至';常量字符*';[-fpermissive]|

C++ C++;错误:从';int';至';常量字符*';[-fpermissive]|,c++,C++,首先,我需要说,我是一个彻头彻尾的傻瓜。 我试图做一些海军作战模拟,我创建了一个随机字母和数字生成器 这是密码。 顺便说一句,我想要实现的是,只有一个变量(猜测)与用户指定的船舶位置相对应 char letters[]= {'A','B','C','D','E','F','G','H','I','L'}; \\ lots of code //RandomAI int G = rand() % 10 + 1; int nOut = rand() % 10 + 1; char lOut = le

首先,我需要说,我是一个彻头彻尾的傻瓜。 我试图做一些海军作战模拟,我创建了一个随机字母和数字生成器 这是密码。 顺便说一句,我想要实现的是,只有一个变量(猜测)与用户指定的船舶位置相对应

char letters[]= {'A','B','C','D','E','F','G','H','I','L'};

\\ lots of code

//RandomAI
int G = rand() % 10 + 1;
int nOut = rand() % 10 + 1;
char lOut = letters[G];
string Guess = lOut + nOut;
return 0;

string Guess=lOut+nOut
添加一个不产生
std::string
int
char
类型。解决此问题的一种方法是创建一个字符串,然后附加到该字符串:

std::string guess =  lOut + std::to_string(nOut);
这将解决编译器错误,但此处仍存在逻辑错误:

int G = rand() % 10 + 1;
rand()%10+1
将生成一个介于1和10之间(包括1和10)的值。你想要一个0到9的数字,因为C++中的索引是从0开始的,而不是从1开始的。因此,请删除
+1
部分:

int G = rand() % 10;

否则,您可能会意外尝试访问
字母中的越界索引
添加一个不产生
std::string
int
char
类型。解决此问题的一种方法是创建一个字符串,然后附加到该字符串:

std::string guess =  lOut + std::to_string(nOut);
这将解决编译器错误,但此处仍存在逻辑错误:

int G = rand() % 10 + 1;
rand()%10+1
将生成一个介于1和10之间(包括1和10)的值。你想要一个0到9的数字,因为C++中的索引是从0开始的,而不是从1开始的。因此,请删除
+1
部分:

int G = rand() % 10;

否则,您可能会意外地尝试访问
字母中的越界索引

假设您需要像“A7”或“F2”这样的输出字符串,实现这一点的一种方法是将所有内容转换为
字符串
(因为您无法添加和
int
字符
)。对于那些还没有访问C++11和
std::to_string()
的用户,您可以使用:

char letters[]= {'A','B','C','D','E','F','G','H','I','L'};
int G = std::rand() % 10;
int nOut = std::rand() % 10;
char lOut = letters[G];
std::stringstream ss;
ss << nOut;
std::string Guess = lOut + ss.str();
char字母[]={'A','B','C','D','E','F','G','H','I','L'};
int G=std::rand()%10;
int nOut=std::rand()%10;
char lOut=字母[G];
std::stringstream-ss;

ss假设您需要像“A7”或“F2”这样的输出字符串,实现这一点的一种方法是将所有内容转换为
string
(因为您不能添加和
int
char
)。对于那些还没有访问C++11和
std::to_string()
的用户,您可以使用:

char letters[]= {'A','B','C','D','E','F','G','H','I','L'};
int G = std::rand() % 10;
int nOut = std::rand() % 10;
char lOut = letters[G];
std::stringstream ss;
ss << nOut;
std::string Guess = lOut + ss.str();
char字母[]={'A','B','C','D','E','F','G','H','I','L'};
int G=std::rand()%10;
int nOut=std::rand()%10;
char lOut=字母[G];
std::stringstream-ss;

ss
nOut
是一个整数,所以不确定OP期望的是什么。@PaulMcKenzie:是的,我假设他打算再次索引
字母。但我认为这是错误的。可能他们想要像
B3
这样的东西。我将更新我的帖子。”保罗。麦肯齐:我要假设“海军作战模拟”是“战舰”。谢谢,这就解决了这个问题,虽然我需要一个5分钟的时间来证明我需要添加对C++ 11的支持。代码< No.< /代码>是一个整数,所以不确定OP预期会是什么。@保罗。麦肯齐:是的,我假设他打算再次索引
字母。但我认为这是错误的。可能他们想要像
B3
这样的东西。我将更新我的帖子。”保罗。麦肯齐:我要假设“海军作战模拟”是“战舰”。谢谢,这就解决了这个问题,虽然我需要一个5分钟的时间来想出我需要添加对C++ 11代码的支持。所以不清楚您期望的输出应该是什么。它应该是类似于
B3
E7
等的东西吗。?或者在字母中加上7(字面意思),例如
'A'+7
等于
'H'
nOut
是一个整数。所以不清楚您期望的输出应该是什么。它应该是类似于
B3
E7
等的东西吗。?或者在字母中加上7(字面意思),例如
'A'+7
等于
'H'