目前我的代码存在问题。我尝试了一切。 image is here 我希望有一个人可以帮助我 :)。顺便说一下,我是c ++的新手
答案 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_comp
是sprites
容器,您可以这样迭代:
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));
,没有任何单行版本,因此您必须按照我上面所述的循环进行迭代。