我正在尝试使用完整路径从字符串文件名创建一些文件夹。
- (void) handleTap:(UIGestureRecognizer*)gestureRecognize{
// retrieve the SCNView
SCNView *scnView = (SCNView *)self.view;
// check what nodes are tapped
CGPoint p = [gestureRecognize locationInView:scnView];
NSArray *hitResults = [scnView hitTest:p options:nil];
// check that we clicked on at least one object
if([hitResults count] > 0){
// retrieved the first clicked object
SCNHitTestResult *result = [hitResults objectAtIndex:0];
// get its material
SCNMaterial *material = result.node.geometry.firstMaterial;
// highlight it
//[SCNTransaction begin];
//[SCNTransaction setAnimationDuration:0.5];
// on completion - unhighlight
[SCNTransaction setCompletionBlock:^{
[SCNTransaction begin];
[SCNTransaction setAnimationDuration:0.5];
material.emission.contents = [UIColor blackColor];
[SCNTransaction commit];
}];
material.emission.contents = [UIColor redColor];
[SCNTransaction commit];
}
}
为此,我需要解析字符串并删除文件名。我想要做的是从后面拆分字符串,以便我可以从创建的目录名称中删除文件名。
以下是我到目前为止的情况。我将字符串拆分为“/”,然后对其进行改造,除了数组的最后一个元素。
string str = "c:/temp/tmp/test.txt";
File_data data;
虽然上面的代码在技术上有效,但我仍然需要在启动前清空 char strArray[1000];
strncpy(strArray, str, sizeof(strArray));
char* objectArray[100] = {0};
unsigned int index = 0;
unsigned int secondIndex = 0;
objectArray[index] = strtok(strArray, "/");
while(objectArray[index] != 0)
{
++index;
objectArray[index] = strtok(0, "/");
}
while(objectArray[secondIndex] != 0)
{
if ((secondIndex - 1) != index)
{
data.name += objectArray[secondIndex];
data.name += "/";
}
++secondIndex;
}
。我希望有一种更简单的方法来完成所有这些,这样我就可以从字符串中删除文件名,并从其余部分创建一个目录结构。
答案 0 :(得分:1)
使用substr并从string中查找函数。 Substr获取位置和长度并返回子字符串。 Find需要一个char或string值来检查并将迭代器返回给实例(分别找到第一个和最后一个实例的第一个和最后一个)。
在代码中执行以下操作:
auto pos = path.find_last_of ('/');
if (pos != string::npos) {
directory = path.substr (0,pos);
file = path.substr (pos);
}
在手机上这样做,为丑陋的回答道歉! :P