C++基础::string(三)

C++基础::string

C++基础::string(二)

  • 在单个字符的查找上,find 和 find_\first_of()是等价的

basename 和扩展名(extension)的获得

注意,一个字符串形式的文件名(filename),自然包含 basename 和扩展名(extension),需要注意的是,扩展名是最后一个.(句点)后的子串,而非第一个,最后一个自然对应于字符串类的find_last_of

std::string filename = "hello.txt.doc", basename, extname;
std::string::size_type idx = filename.find_last_of(".");
if (idx != std::string::npos)
{
    basename = filename.substr(0, idx);
    extname = filename.substr(idx+1, filename.size()-idx-1);
}

文件名合法性的判断

文件名以句点.结尾是不允许的;
推论——文件名非法的判断:

  • 没有句点

  • 句点在文件名的结尾处

std::string::size_type idx = filename.find_last_of('.');
if (idx != std::string::npos && idx != filename.size()-1)
    ...

你可能感兴趣的:(C++基础::string(三))