我有問題將下一個代碼從c轉換爲C++:
我有一個函數將移動序列(從a到i的字符序列)作爲arg。指針字符數組C++
代碼:
void mkmove(char** move) {
int i = 0;
char* p = NULL;
int moves[9][9];
for(int i = 0; i < 9; i++) {
for(p = move[i]; *p; p++) {
moves[i][*p - 'a'] = 3;
}
}
}
int main() {
char* movestr[] = {"abde", "abc", "bcef", "adg", "bdefh", "cfi", "degh", "ghi", "efhi"};
mkmove(movestr);
return(0);
}
GCC編譯的代碼罰款,但如果我嘗試使用g編譯它++它給了我下一個警告:
的main.cpp:17:39:警告:從字符串轉換棄用常量到'char *'[-Wwrite-strings]
我相信這個警告來自事實,即C中的字符串被定義爲char [],而C++使用std :: string。在主要功能
std::string* movestr = {'abde', "abc", "bcef", "adg", "bdefh", "cfi", "degh", "ghi", "efhi"};
,並添加C++字符串頭文件:
所以,我試圖替換使用C++字符串這樣的代碼:
void mkmove(std::string* move) {
在mkmove功能defenition
,並
#include <string>
但現在我收到錯誤:
main.cpp:函數'void mkmove(std :: string *)':
main.cpp:11:21:錯誤:無法將'std :: string {aka std :: basic_string}'轉換爲'char *'賦值
main.cpp:函數'int main()':
main.cpp:19:39:error:標量對象'movestr'需要初始化程序中的一個元素
我也嘗試了一些其他的調整,但是這給了我至少編譯錯誤。
那麼將頂級代碼從C轉換爲C++的正確方法是什麼?
感謝您的回答!
-Slovenia1337
或者(U唱C++ 11)'std :: vector movestr = {「abde」,「abc」,...};' –
bames53
2012-04-02 17:19:52