c++ string简易用法

c++11及以后,data()和c_str()表现一样
c++11以前,有区别,如下
在这里插入图片描述

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>

using std::cout;
using std::endl;


int main(void)
{
// 1
//    std::string data;
//    std::cin >> data;
//    cout << data << endl;
//    cout << data.length() << endl;
    
// 2
//    小于 0 表示当前的字符串小;
//    等于 0 表示两个字符串相等;
//    大于 0 表示另一个字符串小。
//    std::string data1 = "abc";
//    std::string data2 = "abd";
//    
//    int res = data1.compare(data2);
//    cout << res << endl;

// 3
//    std::string data1 = "this is ok";
//    std::string data2 = data1.substr(2, 3);
//    cout << data2 << endl;

//    std::string data1 = "west";
//    std::string data2 = "east";
//    data1.swap(data2);
//    cout << data1 << " " << data2 << endl;

// 4
//    find:从前往后查找子串或字符出现的位置。
//    rfind:从后往前查找子串或字符出现的位置。
//    find_first_of:从前往后查找何处出现另一个字符串中包含的字符。例如:
//    s1.find_first_of("abc");  //查找s1中第一次出现"abc"中任一字符的位置
//    find_last_of:从后往前查找何处出现另一个字符串中包含的字符。
//    find_first_not_of:从前往后查找何处出现另一个字符串中没有包含的字符。
//    find_last_not_of:从后往前查找何处出现另一个字符串中没有包含的字符。
    
//    std::string data;
// cin接收输入时,>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)
// 从第一个非空白符开始读,直到空白符或文件结束为止
    
//    std::cin >> data;
//    int n;
//    cout <<data <<endl;
//    n = data.find('d');
//    if (n != std::string::npos)
//    {
//        cout << n << endl;
//        cout << data.substr(n) << endl;
//    }
    
//    std::string data;
//    std::getline(std::cin, data);
//    int n;
//    cout << data <<endl;
//    n = data.find(' ');
//    if (n != std::string::npos)
//    {
//        cout << n << endl;
//        cout << data.substr(n + 1) << endl;
//    }
//    
//    n = data.rfind(' ');
//    if (n != std::string::npos)
//    {
//        cout << n << endl;
//        cout << data.substr(n + 1) << endl;
//    }
    
// 5
//    std::string data;
//    std::getline(std::cin, data);
//    
//    std::istringstream s_data(data);
//    std::string tmp;
//    while(std::getline(s_data, tmp, ' '))
//    {
//        cout << tmp  << ":" << tmp.length() << endl;
//    }
    
// 6 replace
//    std::string data {"Real Me"};
//    data.replace(1, 2, "duohappy", 0, 3);
//    cout << data << endl;
//    int n = data.find("duo");
//    data.replace(n, 3, "00000");
//    cout << data << endl;

// 7 erase
//    std::string data {"real me happy"};
//    data.erase(1, 3);   // 删除子串(1, 3)
//    cout << data << endl;
//    data.erase(2);   // 删除下标2及其后面的所有字符
//    cout << data << endl;
    
// 8 insert
//    std::string data {"real" };
//    data.insert(4, " me");
//    cout << data << endl;

// 9 istringstream ostringstream 默认空格作为了分隔符
//    std::string data {"name 12 2.5"};
//    std::istringstream is_data{data};
//    std::string name;
//    int n;
//    double d;
//    is_data >> name >> n >> d;
//    cout << name << ":" << name.length() << endl;
//    cout << n << endl;
//    cout  << d << endl;
    
//    std::ostringstream os_data;
//    os_data << name << endl << n << endl << d << endl;
//    cout << os_data.str();

    std::string data {"adcbk"};
    auto p = std::find(data.begin(), data.end(), 'k');
    if (p != data.end())
    {
        cout << std::distance(data.begin(), p) << endl;
    }
    std::sort(data.begin() ,data.end());
    cout << data << endl;
    std::reverse(data.begin(), data.end());
    cout << data <<endl;
    
     return 0;
}


/*
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1("Source Code");
    int n;
    if ((n = s1.find('u')) != string::npos) //查找 u 出现的位置
        cout << "1) " << n << "," << s1.substr(n) << endl;
    //输出 l)2,urce Code
    if ((n = s1.find("Source", 3)) == string::npos)
        //从下标3开始查找"Source",找不到
        cout << "2) " << "Not Found" << endl;  //输出 2) Not Found
    if ((n = s1.find("Co")) != string::npos)
        //查找子串"Co"。能找到,返回"Co"的位置
        cout << "3) " << n << ", " << s1.substr(n) << endl;
    //输出 3) 7, Code
    if ((n = s1.find_first_of("ceo")) != string::npos)
        //查找第一次出现或 'c'、'e'或'o'的位置
        cout << "4) " << n << ", " << s1.substr(n) << endl;
    //输出 4) l, ource Code
    if ((n = s1.find_last_of('e')) != string::npos)
        //查找最后一个 'e' 的位置
        cout << "5) " << n << ", " << s1.substr(n) << endl;  //输出 5) 10, e
    if ((n = s1.find_first_not_of("eou", 1)) != string::npos)
        //从下标1开始查找第一次出现非 'e'、'o' 或 'u' 字符的位置
        cout << "6) " << n << ", " << s1.substr(n) << endl;
    //输出 6) 3, rce Code
    return 0;
}    
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值