欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > C++:string 1

C++:string 1

2025/4/27 17:07:45 来源:https://blog.csdn.net/qq_53989364/article/details/147542500  浏览:    关键词:C++:string 1

练习题:

这个题的思路是从前往后,从后往前同时找,不是字母的话就继续,是的话就交换。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
using namespace std;

//1、4个默认成员函数
void test_string1()
{
    string s1;
    string s2("hello");
    string s3("hello", 2);
    string s4(s2);
    string s5(s2, 1, 2);
    string s6(s2, 1);
    string s7(10, 'a');
    s1 = s7;

    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;
    cout << s4 << endl;
    cout << s5 << endl;
    cout << s6 << endl;
    cout << s7 << endl;
}

//遍历
void test_string2()
{

    string s1("hello");
    s1 += ' ';
    s1 += "world";
    cout << s1 << endl;

    //读  推荐用这种方式
    for (size_t i = 0; i < s1.size(); i++)
    {
        cout << s1[i] << " ";
    }

    //写
    for (size_t i = 0; i < s1.size(); i++)
    {
        s1[i] += 1;
    }
    cout << endl;

    //读
    for (size_t i = 0; i < s1.size(); i++)
    {
        cout << s1[i] << " ";
    }
    cout << endl;

    //迭代器
    //写
    string::iterator it = s1.begin();
    while (it != s1.end())
    {
        *it -= 1;
        ++it;
    }

    //读
    it = s1.begin();
    while (it != s1.end())
    {
        cout << *it << " ";
        ++it;
    }
    cout << endl;

    //范围for
    //C++11 -> 原理是被替换成迭代器
    for (auto ch : s1)
    {
        cout << ch << " ";
    }
    cout << endl;
}

int string2int(const string& str)
{
    int val = 0;
    string::const_iterator it = str.begin();
    while (it != str.end())
    {
        //*it = 'a';//const 迭代器不能修改
        val *= 10;
        val += *it-'0';
        ++it;
    }
    return val;
}

void test_string3()
{
    string s1("hello world!");
    //倒着往前遍历
    string::reverse_iterator rit = s1.rbegin();
    //读
    while (rit != s1.rend())
    {
        cout << *rit << " ";
        ++rit;
    }
    cout << endl;

    string nums("12345");
    cout << string2int(nums) << endl;

    //方向:正向和反向
    //属性:普通和const
}

void test_string4()
{
    string s1("hello world!");
    string s2("hello");
    cout << s1.size() << endl;
    cout << s2.size() << endl;
    cout << s1.length() << endl;
    cout << s2.length() << endl;

    cout << s1.capacity() << endl;
    cout << s2.capacity() << endl;

    s1 += "hehe";
    cout << s1.capacity() << endl;
    s1.clear();//只是清除了内容,并不将capacity置0
    cout << s1 << endl;
    cout << s1.capacity() << endl;
}

void test_string5()
{
    string s;
    //s.reserve(100);
    //s.resize(100, 'x');
    size_t sz = s.size();

    cout << "making s grow:\n";
    for (int i = 0; i < 100; i++)
    {
        s.push_back('c');
        if (sz != s.capacity())
        {
            sz = s.capacity();
            cout << "capacity changed:" << sz << endl;
        }
    }
}

void test_string6()
{
    //string s;
    //s.push_back('x');
    //s.append("x");

    //s += '1';
    //s += "hello";

    //cout << s << endl;

    string s;
    s += '1';
    s += "3456";
    cout << s << endl;
    s.insert(s.begin(), '0');
    cout << s << endl;
    s.insert(2, "2");
    cout << s << endl;
    s.erase(2, 3);
    cout << s << endl;
    s.erase(2, 10);
    cout << s << endl;
}


int main()
{
    //test_string1();
    //test_string2();
    //test_string3();
    //test_string4();

    //test_string5();
    test_string6();
    return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词