• c++第十二天


    《c++ primer, 5E》

    第81页到第86页,笔记:

     处理string对象中的字符:

    1、cctype

    2、foreach(range for)

    3、decltype(Declared Type)

    4、auto

    5、string::size_type(s.size函数的返回值类型)

    6、使用range for改变字符串中的字符,必须把循环变量定义成引用类型

    7、访问string对象的单个字符:下标(也叫索引,类型为string::size_type)和迭代器

        for(decltype(s.size()) index = 0;
            index != s.size() && ! isspace(s[index]); ++index)
                s[index] = toupper(s[index]);

    8、逻辑与运算符(&&)对这个运算符来说最重要的一点是,c++语言规定只有当左侧运算对象为真时才会检查右侧运算对象的情况。

    9、使用下标执行随机访问

        const string hexdigits = "0123456789ABCDEF";
        string result;
        string::size_type n;
        while(cin >> n)
            if(n < hexdigits.size())
                result += hexdigits[n];
        cout << "Your hex number is: " << result << endl;

    遇到的问题:

    1、不需要inlcude<cctype>就可以使用toupper(c)?

    2、下面的程序可编译,无法运行

    #include<string>
    using std::string;
    #include<iostream>
    using std::cin;
    using std::cout;
    using std::endl;
    #include <typeinfo>
    int main()
    {
        const string s = "Keep out!";
        for(auto &c: s){
            cout << typeid(c).name() << endl;
        }
        return 0;
    }

    课后练习:

    练习3.6

    #include<string>
    using std::string;
    #include<iostream>
    using std::cin;
    using std::cout;
    using std::endl;
    
    int main()
    {
        string s("Hello World!!!");
        for(auto &c: s)
            c = 'X';
        cout << s << endl;
        return 0;
    }

    练习3.7

    如果是char c那么不会改变原字符串,

    如果是char &c效果应该和上一题一样。

    (验证正确)

    练习3.8

    遍历序列中的所有元素range for要比while和传统for方便,而且可读性更好。

    练习3.9

    对于这种情况,编译器不会检查下标的合法性,能编译,但是输出结果无法预知。

    练习3.10

    #include<string>
    using std::string;
    #include<iostream>
    using std::cin;
    using std::cout;
    using std::endl;
    int main()
    {
        string s;
        getline(cin , s);
        for(auto c: s)
            if(!ispunct(c))
                cout << c;
        cout << endl;
        return 0;
    }

    练习3.11

    合法。应该是底层const

  • 相关阅读:
    [LeetCode] 294. Flip Game II 翻转游戏之二
    [LeetCode] 293. Flip Game 翻转游戏
    [LeetCode] 266. Palindrome Permutation 回文全排列
    [LeetCode] 288. Unique Word Abbreviation 独特的单词缩写
    [LeetCode] Self Crossing 自交
    [LeetCode] 281. Zigzag Iterator 之字形迭代器
    [LeetCode] 251. Flatten 2D Vector 压平二维向量
    [LeetCode] 250. Count Univalue Subtrees 计数相同值子树的个数
    [LeetCode] 249. Group Shifted Strings 群组偏移字符串
    [LeetCode] 248. Strobogrammatic Number III 对称数之三
  • 原文地址:https://www.cnblogs.com/xkxf/p/6376736.html
Copyright © 2020-2023  润新知