#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个月后回到学习。 遇到困难。
答案 0 :(得分:7)
使用-std=c++11
进行编译时,您的代码运行正常,您可以查看here。
您可以在CodeBlocks中的Setting->Compiler->Have g++ follow the C++11 ISO C++ language standard [-std=C++11]
中添加该选项。
答案 1 :(得分:2)
正如克里斯所提到的,使用基于范围的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;
}
- Saeed Amrollahi Boyouki