我想像给定的例子那样拆分TCHAR消息:
TCHAR [1000] = "[X][X] [X][X][X] [X][P][-]..."
进入二维向量,看起来像这样:
void Comunnication::receiveMessage(tstring msg){
TCHAR gameMessage[1000];
vector<vector<tstring>> gameMap;
BOOL isSucceed = ReadFile(serverUpdatePipe, gameMessage, sizeof(gameMessage), &bytesRead, NULL);
gameMessage[bytesRead / sizeof(TCHAR)] = '\0';
if (!isSucceed || !bytesRead){
break;
}
//Wrong
for (DWORD i = 0; i < 15; i++)
{
vector<tstring> line;
for (DWORD j = 0; j < 15; j++)
{
// get 3 charaters of each time
}
communication.getMap().push_back(line);
}
}
这里的问题是我不知道如何获得3个字符(地图的每个块)并将其保存在二维向量上。
答案 0 :(得分:1)
您可以使用以下功能之一:
std::istream::get
您可以在here,istream& get (char* s, streamsize n);
中了解此功能。
示例:
char *s;
cin.get(s, 4);
cout << s << endl;
并输出:
string test
str
std::istream::read
或者您可以使用此功能istream& read (char* s, streamsize n);
。 here中的说明。
如果使用此功能,则必须先定义行的大小为3。
示例:
char s[3];
cin.read(s, 3);
cout << s << endl;
并输出:
string test
str