0

このコードを試しています...パスをディレクトリとファイルとして分割したいと思います。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

void SplitFilename (const char * str)
{
  size_t found;
  cout << "Splitting: " << str << endl;
  found=str.find_last_of("//");
  cout << " folder: " << str.substr(0,found) << endl;
  cout << " file: " << str.substr(found+1) << endl;
}

int main() {
    char *outFile1 = NULL;
    outFile1 = "//tmp//Softwares//v//vdisk";////tmp//iscsi//target1//lun1
    char* outFile2 = (char*) malloc(strlen(outFile1) + strlen(".meta") + 1);
    strcpy(outFile2,outFile1);
    strcat(outFile2, ".meta");
    cout << "str2:" << outFile2 << "\n";
    SplitFilename (outFile2);

}

これらのエラーが発生しています

../src/test.cpp:20: エラー: 'str' のメンバー 'find_last_of' の要求。これは非クラス型 'const char*' です../src/test.cpp:21: エラー: 要求非クラス型 'const char*' の 'str' のメンバー 'substr' ../src/test.cpp:22: エラー: 非クラス型の 'str' のメンバー 'substr' の要求-クラス型「const char*」</p>

文字ポインタを SplitFilename() 関数に渡すことで、どのように機能させることができるか教えてください。

4

1 に答える 1

1

str は const char* です。文字列ではありません。char はプリミティブ型です。オブジェクトではありません。str を実際の文字列オブジェクトに変換するつもりだったと思います:

std::string my_string(str);
my_string.find_last_fo("//"):
.
.
.
于 2012-08-23T22:28:31.653 に答える