3
#include<iostream>
#include<string>
#include<iterator>
using namespace std;
int main()
{
    string a("hello world");
    for(auto it = a.begin(); it != a.end() && !isspace(*it); it++ )
    {
        *it = toupper(*it);
    }
    cout<<a;
}

我得到两个错误。一个如前所述,“自动更改 c++11 中的含义”,另一个是“!= 未定义运算符”。以前从未遇到过这个问题。

我只使用自动操作员,因为这本书建议。

我是初学者,大约2个月后开始学习。难以赶上。

4

2 回答 2

10

编译时您的代码运行正常-std=c++11,您可以在此处查看

您可以Setting->Compiler->Have g++ follow the C++11 ISO C++ language standard [-std=C++11]在 CodeBlocks 中添加选项。

于 2013-09-23T01:32:27.960 回答
3

正如克里斯所提到的,使用基于范围的 for 循环要好得多。它更接近 C++11 的精神,对于初学者来说更容易学习。考虑:

    #include <string>
    #include <iostream>
    int main()
    {
       std::string s{"hello, world"}; // uniform initialization syntax is better
       for (auto& c : s)  // remember to use auto&
         if (!isspace(c)) c = toupper(c);
       cout << s << '\n'; // remember the last newline character  
       return 0;
    }

——赛义德·阿姆罗拉希·博尤基

于 2013-09-23T08:54:30.843 回答