从字符串中删除子字符串

时间:2014-02-24 07:08:58

标签: c++ string

我有一个代表文件名的字符串,我想删除扩展名,因此删除“。”之后的所有内容。什么是最好的方式?感谢。

3 个答案:

答案 0 :(得分:2)

下面的代码可以用于相同的..

int npos = str.find_last_of('.');
str = str.substring(0,npos);

答案 1 :(得分:1)

如果您使用的是Windows,则以下功能可以解决问题:

std::wstring StripFileExtension(std::wstring fileName)
{
  WCHAR tempBuffer[MAX_PATH];

  if (fileName.empty())
  {
    return TEXT("");
  }

  wcscpy(tempBuffer, fileName.c_str());
  PathRemoveExtension(tempBuffer);

  return tempBuffer;
}

答案 2 :(得分:0)

您可以使用std :: string,并将每个字符复制到新字符串

std::string name = "filename.jpg", newname ="";
int thelength = 0;
for(int i=name.length();i>0;i--){
    if( name[i] != '.'){
           thelength++;
    }
    else{
        break;
    }
}
for(int i=0;i<(name.length()-thelength);i++){
    newname+=name[i];
}