我坚持如何从矢量中检索字符串。我的代码如下。
在我的.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 *
如何从此向量中检索字符串?
答案 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()函数,该函数是字符串类的成员。