从向量中检索字符串

时间:2013-03-30 07:57:45

标签: c++ cocos2d-x

我坚持如何从矢量中检索字符串。我的代码如下。

在我的.h文件中:

vector<string>cloudsImages;

在我的.m文件中:

cloudsImages = FileOperation::readFile();

for (int i = 0; i < cloudsImages.size(); i++) {

    cocos2d:: CCSprite *cloudImage = CCSprite::spriteWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(cloudsImages[i]));
    cloudImage -> setTag(1);
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();
    cloudImage->setPosition(ccp(i,winSize.height / 2));
    this -> addChild(cloudImage);

} 

当尝试从向量访问字符串时,我收到以下错误:

  

无法从std::basic_string<char>转换为const char *

enter image description here

如何从此向量中检索字符串?

1 个答案:

答案 0 :(得分:4)

在这一行中,

cocos2d:: CCSprite *cloudImage = CCSprite::spriteWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(cloudsImages[i]));

而不是cloudsImages[i],请使用cloudsImages[i].c_str()。它需要一个const char *,它就是.c_str()返回的内容。

所以你的行变为

cocos2d:: CCSprite *cloudImage = CCSprite::spriteWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName( cloudsImages [I] .c_str() ));

C ++中的字符串与C风格的字符串略有不同。在C中,字符串只是一个字符数组,以空字符'\ 0'结尾。例如,字符串“Hello”由长度为6的char'数组表示(每个字符1 char,'\ 0'为1)。

在C ++中,string类是这个基本数组的包装器。包装器允许您对字符串执行操作(例如,比较两个字符串,将一个字符串替换为另一个字符串等)。类包含一个C风格的字符串,仅用于保存字符。

您的函数需要一个C风格的字符串。要从C ++字符串中获取它,请使用c_str()函数,该函数是字符串类的成员。