C++中的fstream问题
本文介绍了C++中的fstream问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在《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");
包含引号?
问题有些简单,希望各位大神给解答一下,谢谢。
解决方案
为什么在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"
这篇关于C++中的fstream问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文