C++的string类常见用法

C++的string常见用法,在网上看到一篇,但是不能在c++11编译器下运行,我修改了下,还没改完:

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

int main()
{
    string str1 = "hello";
    string* str2 = new string("hello");
    string str3 = "world";

    //获取字符串长度
    int length = str1.length();
    cout << "调用str.length()函数获取字符串长度:" << length << endl;
    cout << endl;

    //字符串连接
    string str4 = str1 + str3;
    cout << "字符串连接结果:" << str4 << endl;
    cout << endl;

    //字符串比较
    if (str1 < str3)
        cout << "字符串比较:" << "str1<str2" << endl;
    cout << endl;

    //获取字符串的第一个字符
    string::const_iterator it = str1.begin();
    cout << *it << endl;
    cout << endl;

    //获取字符串的最后一个字符
    it = str1.end();//end是指向最后一个字符后面的元素,而且不能输出,所以cout << *it << endl;这样输出会报错
    it--;
    cout << *it << endl;
    cout << endl;

    //倒置串
    reverse(str1.begin(), str1.end());
    cout << "倒置串:" << str1 << endl;
    cout << endl;

    //字符串转字符数组
    //不推荐的用法,但是需要了解
    string a = "abc123";
    const char *b;//这里必须为const char *,不能用char *,不然下一句会报错
    b = a.c_str();
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;
    a = "asd456";
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;
    //推荐用法
    string c = "abc123";
    char *d = new char[20];
    strcpy(d, c.c_str());//因为这里没有直接赋值,所以指针类型可以不用const char *
    cout << "c:" << c << endl;
    cout << "d:" << d << endl;
    c = "asd456";
    cout << "c:" << c << endl;
    cout << "d:" << d << endl;
    cout << endl;

    //查找串
    //find-从指定位置起向后查找,直到串尾
    string st1("babbabab");
    cout << st1.find(‘a‘) << endl;//1,默认从位置0(即第1个字符)开始查找
    cout << st1.find(‘a‘, 2) << endl;//4   在st1中,从位置2(b,包括位置2)开始,查找a,返回首次匹配的位置
    cout << (st1.find(‘c‘, 0) == -1) << endl;//1
    cout << (st1.find(‘c‘, 0) == 4294967295) << endl;//1   两句均输出1,原因是计算机中-1和4294967295都表示为32个1(二进制)
    string st2("aabcbcabcbabcc");
    str1 = "abc";
    cout << st2.find(str1, 2) << endl;//6,从st2的位置2(b)开始匹配,返回第一次成功匹配时匹配的串(abc)的首字符在st2中的位置,失败返回-1
    cout << st2.find("abcdefg", 2, 3) << endl;//6   取abcdefg得前3个字符(abc)参与匹配,相当于st2.find("abc", 2)

    //rfind-从指定位置起向前查找,直到串首
    cout << st1.rfind(‘a‘, 7) << endl;//6

    //find_first_of-在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回-1
    string str6("bcgjhikl");
    string str7("kghlj");
    cout << str6.find_first_of(str7, 0) << endl;//2,从str1的第0个字符b开始找,g与str2中的g匹配,停止查找,返回g在str1中的位置2

    //find_last_of-与find_first_of函数相似,只不过查找顺序是从指定位置向前
    string str("abcdecg");
    cout << str.find_last_of("hjlywkcipn", 6) << endl;//5,从str的位置6(g)开始向前找,g不匹配,再找c,c匹配,停止查找,返回c在str中的位置5

    //find_first_not_of-在源串中从位置pos开始往后查找,只要在源串遇到一个字符,与目标串中的任意字符都不相同,就停止查找,返回该字符在源串中的位置;若遍历完整个源串,都找不到满足条件的字符,则返回-1
    cout << str.find_first_not_of("kiajbvehfgmlc", 0) << endl;//3   从源串str的位置0(a)开始查找,目标串中有a,匹配,..,找d,目标串中没有d(不匹配),停止查找,返回d在str中的位置3

    //find_last_not_of-与find_first_not_of相似,只不过查找顺序是从指定位置向前
    cout << str.find_last_not_of("kiajbvehfgmlc", 6) << endl;//3return 0;

}

参考:https://www.cnblogs.com/engraver-lxw/p/7581540.html

原文地址:https://www.cnblogs.com/litifeng/p/10291619.html

时间: 2024-10-13 00:41:49

C++的string类常见用法的相关文章

标准C++中的string类的用法总结

标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中string类的使用.标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用

标准C++中的string类的用法总结【转】

转自(略改动):http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 更全面新颖的说明见:http://www.cplusplus.com/reference/string/string/  说明: 1.size_t 是个unsigned integral type.  2.文中 c字符数组 是指末尾不带'\0'的,注意与 c字符串 的区别 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC

java面向对象-------String类基本用法

package cn.zxg.oop; /** * 测试string类的用法,不能被重写 */ public class TestString { String a; public static void main(String[] args) { String str="abc"; String str2=new String("def"); String str3="abc"+"def"; String str4=&quo

string类的用法笔记

要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 using  std::string; using  std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t. string和wstring的用法是一样的,以下只用string作介绍: string类

[转]标准C++中的string类的用法总结

原文地址:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中stri

VC++ 标准C++中的string类的用法总结

相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中string类的使用.标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用.现将具体用法的一部分罗列如下,只起一个

整理string类常见方法的使用说明

整理String类的Length().charAt().getChars().replace().toUpperCase().toLowerCase().trim().toCharArray()使用说明 Length():可以用来计算字符串的长度.例如: String s=new String(“asdf”);System.out.println(s.length());//求得字符串长度. charAt():获取指定位置的字符.例如:char charAt(int index).index为字

标准C++中的string类的用法总结(转)

http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中string类的使

《java入门第一季》之类(String类常见方法小叙)

String类下面的构造方法和一些常见的方法: /* * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,可以知道 * A:字符串字面值"abc"也可以看成是一个字符串对象. * B:字符串是常量,一旦被赋值,就不能被改变. * * 构造方法: * public String():空构造 * public String(byte[] bytes):把字节数组转成字符串 * public String(byte[] bytes,int index,i