c ++解析带格式的字符串

c++ parsing string with format

我正忙于必须解析 .txt 文件的游戏 每行包含这样的格式 [goblin;2;30x1;1-5;20;5]

数值如下:

我当前的代码是这样的:

    std::stringstream sstream(monsterLine);

    // Name is until the first comma.
    std::getline(sstream, monster.name, ';');

    // Then its spaces seperating the values.
    sstream >> monster.level;
    sstream >> monster.attackPoints;
    sstream >> monster.damagePoints;
    sstream >> monster.defensePoints;
    sstream >> monster.lifePoints;

然而,这只有在我格式化像 goblin;2 30x1 1-5 20 5 这样的字符串时才有效 我怎样才能使它与上述格式一起工作?

具体: 我如何检查当前行是否位于 [...] 内并删除它们。 我如何通过 ; 而不是 (whitespace)

拆分值

继续使用 getline; 作为分隔符。

>> 运算符无法识别 ;。它只能使用空格。

getline 可用于字符串的标记化。

if( (monsterLine.length() > 2) && 
    (monsterLine[0] == '[') && 
    (monsterLine[monsterLine.length() - 1] == ']') )
    {
        std::string szNewMonsterLine = monsterLine.substr(1, monsterLine.length() - 2);
        std::stringstream ss(szNewMonsterLine);

        if(getline(ss, monster.name, ';'))
        {   
            //some problem fetching data            
        }
        if(getline(ss, monster.level, ';'))
        {   
            //some problem fetching data            
        }
        if(getline(ss, monster.attackPoints, ';'))
        {   
            //some problem fetching data            
        }
        ...
        ...
        if(getline(ss, monster.lifePoints, ';'))
        {   
            //some problem fetching data
        }   
    }