我想像给定的例子那样拆分一条 TCHAR 消息:
TCHAR [1000] = "[X][X] [X][X][X] [X][P][-]..."
变成一个二维 vector ,看起来像这样:
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 个字符( map 的每个 block )并将其保存在二维 vector 上。
最佳答案
您可以使用以下功能之一:
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
关于c++ - 将 TCHAR 拆分为二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700085/