C++ Primer(5th Edition)里关于string的一道习题

libraco
  • 760

原代码如下

int main()
{
    string s;
    getline(cin, s);
    for (auto &c : s)
        c = 'X';
    cout << s << endl;
    return 0;
}

就是把字符串里的字符都替换成‘X’。现在的问题是,auto改成char会怎样?
我试了一下,什么问题都没有,这个题目不会这么无聊吧?

回复
阅读 3.9k
2 个回答
公子
  • 36.6k
✓ 已被采纳

你是在VS里头运行的吧,要视你的编译器而定的,我在Dev C++中运行你这段代码就直接报错了。C++ Primer第五版是增加了C++11的支持的,在C++11中auto是让程序自己推断变量类型的,本来你这个c变量就是会被判断成char的,所以你直接自己把它定义成char也没有问题啊。关于auto关键字你可以参考:http://www.ituring.com.cn/article/39533

宣传栏