嗨,大家好我在這個地方有錯誤:C++ strcpy_s智能感知錯誤
strcpy_s(msgToGraphics, game.board_now());
的錯誤是:
IntelliSense: no instance of overloaded function "strcpy_s" matches the argument list argument types are: (char [1024], std::string)
這裏是game.board_now FUNC:
string Board::board_now()
{
return _board;
}
這裏是其餘的代碼,我嘗試使用strncpy_s:
#include "Pipe.h"
#include "Board.h"
#include <iostream>
#include <thread>
using namespace std;
void main()
{
srand(time_t(NULL));
Pipe p;
bool isConnect = p.connect();
string ans;
while (!isConnect) {
cout << "cant connect to graphics" << endl;
cout << "Do you try to connect again or exit? (0-try again, 1-exit)" << endl;
cin >> ans;
if (ans == "0") {
cout << "trying connect again.." << endl;
Sleep(5000);
isConnect = p.connect();
}
else {
p.close();
return;
}
}
char msgToGraphics[1024];
// msgToGraphics should contain the board string accord the protocol
// YOUR CODE
Board game;
//strcpy_s(msgToGraphics, game.board_now()); // just example...
p.sendMessageToGraphics("rnbkqbnrpppppppp################################PPPPPPPPRBNKQNBR0"); // send the board string
// get message from graphics
string msgFromGraphics = p.getMessageFromGraphics();
while (msgFromGraphics != "quit") {
game.change_board(msgFromGraphics);
game.change_board_sq(msgFromGraphics);
strcpy_s(msgToGraphics, game.board_now()); // msgToGraphics should contain the result of the operation
// return result to graphics
p.sendMessageToGraphics(msgToGraphics);
// get message from graphics
msgFromGraphics = p.getMessageFromGraphics();
}
p.close();
}
該代碼基本上是一個國際象棋程序,我嘗試在我做出的更改後接收棋盤,並且我不知道如何在strcpy_s中格式化他以便將其放入數組並將其發送回給定的exe。 感謝所有嘗試幫助的人!
爲什麼不'msgToGraphics'一個'的std :: string'呢?你可以避免很多麻煩,避免使用簡單的'char'數組,在這種情況下,你可以通過operator =賦值給另一個字符串,如'msgToGraphics = game.board_now();'。 –
,因爲它必須是數組,因爲這是接口接收的信息 – SimpleNigal
這不是一個好的理由。您可以使用string :: c_str()將字符指針傳遞給您的API。 –