C ++ SFML从map返回所有sprite

时间:2016-07-30 16:02:51

标签: c++ visual-studio sfml

目前我的代码存在问题。我尝试了一切。 image is here 我希望有一个人可以帮助我 :)。顺便说一下,我是c ++的新手

2 个答案:

答案 0 :(得分:0)

int testFunction()
{
    std::string _orig = "[188 80% (1/2)O:152]";
    std::string _orig2 = "[999 99% (1/1)O:999]";

    char *orig = NULL;
    char *orig2 = NULL;

    orig = new char[_orig.length() + 1];
    strcpy(orig, _orig.c_str());

    orig2 = new char[_orig2.length() + 1];
    strcpy(orig2, _orig2.c_str());

    *orig++;
    *orig2++;

    int a = atoi(orig);
    int b = atoi(orig2);

    delete[] orig;
    delete[] orig2;

    return 0;
}

答案 1 :(得分:0)

Location无效C ++;从C ++ 11开始,正确的表达式是 for each

在这里,您还试图通过for (<type> <variable> : <collection>)访问元素集合,这是一个功能,在这里没有意义。

假设sprites.value_compsprites容器,您可以这样迭代:

std::set

如果您使用的是for (auto sprite : sprites) { // sprite is the value you're looking for } ,请使用相同的循环,但std::map不会包含您的sprite,而是其密钥,您需要使用sf::Sprite访问精灵。

请注意,sprite.second关键字允许编译器确定变量的类型。

如果您的编译器不支持C ++ 11,则需要执行以下操作:

auto

使用std::set<sf::Sprite>::iterator it; for (it = sprites.begin(); it != sprites.end(); ++it) { // Access each sprite using *it (the star is necessary here) }

std::map

但是,如果您只想将// Replace "keyType" with the type of the keys, such as int or std::string std::map<keyType, sf::Sprite>::iterator it; for (it = sprites.begin(); it != sprites.end(); ++it) { // Access each sprite using it->second } 转换为std::set,则可以采用更简单的方法:

std::vector

对于std::vector <sf::Sprite> sprites_c2; std::copy(sprites.begin(), sprites.end(), std::back_inserter(sprites_c2)); ,没有任何单行版本,因此您必须按照我上面所述的循环进行迭代。