有一些解答存在缺陷_C++ Primer习题集(第5版)书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > > C++ Primer习题集(第5版) > 有一些解答存在缺陷
Gnoweb C++ Primer习题集(第5版) 的书评 发表时间:2015-11-06 23:11:54

有一些解答存在缺陷

练习 5.21 代码有缺陷。比如使用 hello Man big Man error 这样的字符串,它认为 Man 连续出现了两次,实际上 Man 和 Man 之间有个 big。

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char const *argv[])
{
    string currString, preString;
    bool bl = true;
    cout << "Enter a set of strings: " << endl;
    while (cin >> currString) {
        if (!isupper(currString[0]))
            continue;
        if (currString == preString) {
            bl = false;
            cout << "The repeat string is: " << currString << endl;
            break;
        }
        preString = currString;
    }
    if (bl)
        cout << "There is no repeat string." << endl;
    return 0;
}

为了配合书中刚讲的内容而使用 continue,结果导致代码不严密,像上面那个字符串就是例子。改成下面这个形式应该就可以了:

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char const *argv[])
{
    string currString, preString;
    bool bl = true;
    cout << "Enter a set of strings: " << endl;
    while (cin >> currString) {
        if (currString == preString && isupper(currString[0])) {
            bl = false;
            cout << "The repeat string is: " << currString << endl;
            break;
        }
        preString = currString;
    }
    if (bl)
        cout << "There is no repeat string." << endl;
    return 0;
}

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读