[C++] 使用基于范围的for循环操作string

C++11提供范围for语句,这个语句遍历给定的序列中的每个元素并对序列中的每个元素执行某种操作:

for (declaration : expression)
    statement
  • 输出string中的每个字符:
    string str("some string");

    for (auto c : str)
    {
        cout << c << endl;
    }
在for循环中使用auto声明变量c,由编译器决定其类型,每次循环,将str中的下一个字符拷贝到c中。
  • 使用ispunct函数来统计string中标点符号的个数
    string s("Hello World!!!");
    decltype(s.size()) punct_cnt = 0;

    for (auto c : s)
    {
        if (ispunct(c))
            ++punct_cnt;
    }

    cout << punct_cnt << " punctuation characters in " << s << endl;
  • 使用范围for语句改变字符串的字符
    for (auto &c : s)
    {
        c = toupper(c);
    }

    cout << s << endl;
c是string s中字符的引用,使用toupper将string中字符改成大写字符。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。