2016-04-04 224 views
0

首先,我需要说,我是一个完整的noob。 我正在尝试做一些海战作战模拟,以便我创建一个随机字母和数字发生器 这是代码。顺便说一句,我想要实现的是只有一个变量(猜测)面对用户指定的船舶位置。C++错误:从'int'无效转换为'const char *'[-fpermissive] |

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; 
+0

'nOut'是一个整数。所以目前还不清楚你的产出应该是什么。它应该像'B3','E7'等一样?或者你给信件(字面上)加上7,ex。 “'A'+ 7'等于'H'? – PaulMcKenzie

回答

3

string Guess = lOut + nOut;增加了一个intchar类型的不产生std::string。要解决这个问题的方法之一是创建一个字符串,然后追加到它:

std::string guess = lOut + std::to_string(nOut); 

这将解决您的编译器错误,但你仍然有一个逻辑错误的位置:

int G = rand() % 10 + 1; 

rand() % 10 + 1会产生值在1到10之间。你想0和9(含)之间的数字,因为在C指数+ 0开始,而不是1所以降+1部分:

int G = rand() % 10; 

否则,你可能会意外地试图访问一个彻头彻尾的越界指数letters

+2

'nOut'是一个整数,所以不太确定OP的期望。 – PaulMcKenzie

+0

@PaulMcKenzie:是的,我做了一个假设,他打算再次索引到“字母”。不过,我认为这是错误的。可能他们想要类似'B3'的东西。我会更新我的帖子。 – AndyG

+0

@PaulMcKenzie:我将假设“海战模拟”的意思是“战列舰”。 – AndyG

0

假设你想输出字符串像“A7”或“F2”,一个办法实现,这将是一切转变为string(因为你不能添加和intchar)。对于那些还没有访问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(); 
相关问题