C++中的fstream问题
PHP中文网
PHP中文网 2017-04-17 13:40:32
[C++讨论组]

在《C++primer》这本书的第八章P284页中,有如下代码:

ifstream inout(argv[1]);
    ofstream output(argv[2]);
    Sales_data total;
    if (read(input, total)) {
        Sales_data trans;
        while (read(inout, trans)) {
            if (total.isbn() == trans.isbn())
                total.combine(trans);
            else {
                print(output, total) << endl;
                total = trans;
            }
        }
        print(output, total) << endl;
    }
    else
        cerr << "NO data?" << endl;

而在练习8.4,代码如下:

int main() {
ifstream in("data");     //打开文件
    if (!in) {
        cerr << "无法打开输入文件" << endl;
        return -1;
    }
    string line;
    vector<string> words;
    while (getline(in, line)) {
        words.push_back(line);
    }
    in.close();
    vector<string>::const_iterator it = words.begin();
    while (it != words.end()) {
        cout << *it << endl;
        ++it;
    }
    return 0;
}

我的问题是 为什么在p284的代码中 ifstream input (argv[1]);没有加引号
而在8.4的练习中ifstream in("data");包含引号?
问题有些简单,希望各位大神给解答一下,谢谢。

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
天蓬老师

为什么在p284的代码中 ifstream input(argv[1]);没有加引号?

因为argv[1]是一个变量名。

而在8.4的练习中ifstream in("data");包含引号?

因为"data"是一个字符串常量。

这就跟以下示例一个意思:

string abc("s");

string s1("abc");  // s1 == "abc"
string s2(abc);    // s2 == "s"
高洛峰

因为args[1]就表示一个字符串常量

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号