substr

来源:互联网 发布:windows xp 纯净版 编辑:程序博客网 时间:2024/05/04 18:40

其中 startpos 是起始字符的序号,length 是[从 startpos 开始]取的字符串长度(包括

startpos )。

如果要取得 str 中序号 m 到 n 之间(不包括n)的子字符串需要用

str.substr(m, n-m);

 

#include<string>
#include<iostream>
using namespace std;

main()
{
string s("12345asdf");
string a=s.substr(0,4);       //获得字符串s中 从第0位开始的长度为4的字符串
cout<<a<<endl;
}

输出结果为:

1234
 
查找字符开始与结束

#include <iostream>
using std::cout;
using std::endl;

#include <string>
using std::string;

int main()
{
   string s1( "AA1234567890asdfasdf" );
   string s2( " AAB" );
   string s3;

   // test substr "to-end-of-string" option
   cout << "The substring of s1 starting atn"
      << "location 5, s1.substr(5), is:n"
      << s1.substr( 5 ) << endl;

   return 0;
}

/* 
The substring of s1 starting at
location 5, s1.substr(5), is:
4567890asdfasdf

查找一个字符的位置

#include <iostream>
using std::cout;
using std::endl;

#include <string>
using std::string;

int main()
{
   string s1( "AA1234567890asdfasdf" );
   string s2( " AAB" );
   string s3;

   // test string member function substr
   cout << "The substring of s1 starting at location 0 forn"
      << "14 characters, s1.substr(0, 14), is:n"
      << s1.substr( 0, 14 ) << "nn";

   return 0;
}

利用substr函数获取文件的扩展名方法

#include <iostream>
#include <string>
using namespace std;

int main (int argc, char* argv[])
{
    string filename, basename, extname, tmpname;
    const string suffix("tmp");

    /* for each command-line argument
     * (which is an ordinary C-string)
     */
    for (int i=1; i<argc; ++i) {
        // process argument as file name
        filename = argv[i];
        
        // search period in file name
        string::size_type idx = filename.find('.');
        if (idx == string::npos) {
            // file name does not contain any period
            tmpname = filename + '.' + suffix;
        }
        else {
            /* split file name into base name and extension
             * - base name contains all characters before the period
             * - extension contains all characters after the period
             */
            basename = filename.substr(0, idx);
            extname = filename.substr(idx+1);
            if (extname.empty()) {
                // contains period but no extension: append tmp
                tmpname = filename;
                tmpname += suffix;
            }
            else if (extname == suffix) {
                // replace extension tmp with xxx
                tmpname = filename;
                tmpname.replace (idx+1, extname.size(), "xxx");
            }
            else {
                // replace any extension with tmp
                tmpname = filename;
                tmpname.replace (idx+1, string::npos, suffix);
            }
        }

        // print file name and temporary name
        cout << filename << " => " << tmpname << endl;
    }

0 0
原创粉丝点击