您的位置:首页 > 编程语言 > C语言/C++

c++ substr()字符函数的使用方法

2015-03-22 20:12 330 查看


                                             


c++ substr()字符函数的使用方法<转>

str.substr(startpos, length);

其中 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;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ stl