将TCHAR分裂为二维向量

时间:2015-06-08 01:19:06

标签: c++ winapi

我想像给定的例子那样拆分TCHAR消息:

TCHAR [1000] = "[X][X]   [X][X][X]   [X][P][-]..."

进入二维向量,看起来像这样:

enter image description here

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个字符(地图的每个块)并将其保存在二维向量上。

1 个答案:

答案 0 :(得分:1)

您可以使用以下功能之一:

  • 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