C++中的fstream问题

浏览:52日期:2023-05-08

问题描述

在《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; } elsecerr << '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');包含引号?问题有些简单,希望各位大神给解答一下,谢谢。

问题解答

回答1:

为什么在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'回答2:

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

相关文章: