在每个元素之后使用逗号打印字符串向量

时间:2014-03-28 16:39:36

标签: c++

我试图用向上的逗号栏分隔向量中的每个元素。我已经研究过使用String.Join方法,但我不认为这适用于我的情况。

string Room::displayWeapon() {
    string tempString = "Weapon in room = ";
    int sizeItems = (weaponsInRoom.size());
    if (weaponsInRoom.size() < 1) {
        tempString = "no items in room";
        }
    else if (weaponsInRoom.size() > 0) {
       int x = (0);
        for (int n = sizeItems; n > 0; n--) {
            tempString = tempString + weaponsInRoom[x].getShortDescription() ;
            x++;
            }
        }
    return tempString;
    }

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

bool first = true;
for (int n = sizeItems; n > 0; n--) {
    if(!first) {
        tempString = tempString + ",";
    }
    tempString = tempString + weaponsInRoom[x].getShortDescription() ;
    x++;
    first = false;
}

答案 1 :(得分:0)

如果你想保持简单,有两种方法可以考虑它。您可以先取下第一个元素,然后在每个后面放置一个逗号,或者取出所有其他元素并在每个元素后面放一个逗号。

首先,在

之前放置逗号
// ...
else if (weaponsInRoom.size() > 0) {
    tempString += weaponsInRoom.front().getShortDescription();
    for (std::size_t n = 1; n < weaponsInRoom.size(); ++n) {
        tempString += ", " + weaponsInRoom[n].getShortDescription();
    }
}
// ...

在除最后一个

之外的每一个之后放置逗号
// ...
else if (weaponsInRoom.size() > 0) {
    for (std::size_t n = 0; n < weaponsInRoom.size() - 1; ++n) {
        tempString += weaponsInRoom[n].getShortDescription() + ", ";
    }
    tempString += weaponsInRoom.back().getShortDescription();
}
// ...