2016-04-04 225 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(); 
相關問題