今天要用C++来分割一段字符串,比如说对于路径C:\ug_en\xerces-c-3.0.0.zip来说,我想分离出文件名,要怎么办呢?

其实很简单,只要把字符串分割一下就好了:

string dir = “C:\ug_en\xerces-c-3.0.0.zip”;
string name;
string::size_type position = dir.find_last_of(“\”);
name = dir.substr(position+1);

注意的是,最后用到了position+1,而不仅仅是position,因为我们还是需要把\这个路径符给扔掉。

相对于C++标准库里string的find_last_of方法,同样类似功能的方法有以下几种方法:

Member function Purpose
find() find the first position of the specified substring
find_first_of() equal to find(), but finds the first position of any character specified
find_last_of() equal to find first of(), but finds the last position of any character specified
find_first_not_of() equal to find first of(), but returns the position of the first character not of those specified
find_last_not_of() equal to find last of(), but returns the last position of any characters not specified
rfind() equal to find(), but searches backwards

在C++里操作字符串,大概就是这种思路,有点麻烦。这几天编了不少C++的代码,太怀念文本处理能力强大的Perl了!我觉得语言本身倒不是太重要,只是语言本身捆绑的库很重要,起码能让你工作的时候少造轮子!

更详细的有关C++的字符串操作,可以看看OOPWeb上的这篇文章