将 TCHAR 拆分为二维向量
Splitting TCHAR into bidimensional vector
我想像给定的示例一样拆分 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)] = '[=11=]';
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 个字符(地图的每个块)并将其保存在二维向量上。
您可以使用以下功能之一:
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
我想像给定的示例一样拆分 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)] = '[=11=]';
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 个字符(地图的每个块)并将其保存在二维向量上。
您可以使用以下功能之一:
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