将 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

您可以在 hereistream& 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