注册 登录
编程论坛 C++教室

求指导一道关于文件读写的问题

nothingness 发布于 2013-05-16 20:01, 1132 次点击
//:lx6:scopy.cpp
#include <string>
#include <fstream>
using namespace std;
int main(){
    ifstream in("scopy.cpp");
    ofstream out("scopy2.cpp");
    string s;
    while(getline(in,s))
    out<<s<<"\n";
}///:~
请问第一行的“scopy.cpp”与的六行的“scopy.cpp”时表示同一个文件吗?

ifstream in("scopy.cpp");     这个语句是表示读取这个文件本身吗?

ifstream与ofstream后面的in与out分别是什么?

out与cout的区别是什么?
新手小白,求大神指导

13 回复
#2
peach54602013-05-17 10:32
1...第一行不是注释么,大哥
2...你不知道什么叫变量吗?
3,基于你的问题,out和cout有什么区别对你来说级别太高,我不想解释

[ 本帖最后由 peach5460 于 2013-5-17 10:34 编辑 ]
#3
fxbszj2013-05-17 15:26
楼主看书看到哪一页了,我建议回到第一页重新看。基础知识太薄弱
#4
cwt88052013-05-17 16:48
cout 是与标准输出流绑定的对象,写入这个对象的任何数据会打印到屏幕。同理,你定义的out对象是和scopy2.cpp文件流绑定的对象,写入这个对象的任何数据会写入scopy2.cpp文件
#5
nothingness2013-05-17 18:05
回复 2楼 peach5460
我知道第一行是注释,我只想问一下第一行注释中的文件名与ifstream后面的文件名是不是表示同一个文件。

这个程序我主要是对“文件读写”中的ifstream以及ofstream的用法不太理解,我不明白与变量有什么关系。

如果你知道out与cout的区别的话,麻烦解答一下
#6
nothingness2013-05-17 18:16
回复 4楼 cwt8805
out是重载的输出符号吗,还没看到重载所以不太了解其作用,请问是重载是使它具有新的作用了吗
#7
q2152362132013-05-17 22:57
ifstream in("scopy.cpp");
in 是 ifstream 类型的变量
 ofstream out("scopy2.cpp");
out 是ofstream 类型的变量
#8
peach54602013-05-18 07:12
以下是引用nothingness在2013-5-17 18:05:23的发言:

我知道第一行是注释,我只想问一下第一行注释中的文件名与ifstream后面的文件名是不是表示同一个文件。

这个程序我主要是对“文件读写”中的ifstream以及ofstream的用法不太理解,我不明白与变量有什么关系。

如果你知道out与cout的区别的话,麻烦解答一下

我同意楼上的说法...回去第一页重看吧...基础知识很薄弱...
#9
nothingness2013-05-18 12:56
回复 7楼 q215236213
那么getline(in,s)是不是把in对应的"scopy.cpp"读入到string类型的变量s中,然后通过out<<s<<"\n"再将"scopy.cpp"用out传给"scopy2.cpp",是这样吗。
新手小白,问题较多,还请见谅,谢谢
#10
nothingness2013-05-18 13:03
回复 8楼 peach5460
额,我基础确实挺差的,刚看到第三章。
你说的变量问题是7楼说的“ifstream in("scopy.cpp");in 是 ifstream 类型的变量。ofstream out("scopy2.cpp");out 是ofstream 类型的变量 ”吗?
in和out之前确实没看懂,
请问getline(in,s)是不是把in对应的"scopy.cpp"读入到string类型的变量s中,然后通过out<<s<<"\n"再将"scopy.cpp"用out传给"scopy2.cpp",是这样吗。
本人新手小白,还请多多指导
#11
福尔摩斯2013-05-18 14:39
如果我没记错的话, 这道例题是 《C++编程思想 上册》 的第二章的内容
C++编程思想 这本书太难了。 如果你是新手的话建议从 《21天学通C++》 或者 《易学C++》 入门。 入门以后再看 C++编程思想
我记得 C++编程思想 每章课后都有习题。 这道例题背后也有习题, 你可以尝试先做一下。
如果有些问题不能理解, 同时又得不到解答的, 我建议你可以先放放, 继续学下一章节的内容。
要学会主干学习, 知道什么是重点, 要先掌握, 什么是次要, 可以放着以后理解。

对于每一道例题和习题, 可以自己尝试下变化。 当然这是要在掌握和了解知识点的基础上。
我建议你把每张的知识点写下来, 学完这一章之后, 放下书, 看着知识点, 看看自己能回忆多少; 同时还有一种方法, 你把你手上的知识点进行重新的排列组合, 自己思考一个程序, 要用到你新学的知识点。

要学会沉淀 自己所学的 知识, 让它为我所用
#12
福尔摩斯2013-05-18 14:52
回复 10楼 nothingness
getline函数 你可以打开你编译器的文件目录中的include文件夹, 用编译器打开 iostream头文件, 你就会学到用法(主要是声明); 还有 cpp文件, 主要是函数的定义
getline第一个参数是 输入流对象, 第二个参数是 字符串对象

原文是 getline(in, s);
就是由 输入流对象in (它对应指向的文件) 取一行 读入 字符串对象s中

实际上你也可以这样 getline(cin, s)
就是将 键盘输入 取一行 读入s

while(getline())
getline() 的返回判断是 如果 输入流对象 未到文件末尾EOF(End Of File), 返回true; 如果遇到, 返回false

getline(in, s)
只要 in所对应的对象 未读到EOF, 循环继续

getline(cin, s)
则是 cin未读到 ctrl + z, 循环继续

这些可以通过查看函数原型来知道的。 所以要习惯看头文件里的函数原型, 而且它们都是大师们的成果。 先学会用再学会改!(尤其以后你学到派生的时候要会改别人的成果, 将基类的一些功能隐藏, 用自己的东西顶替上去)

[ 本帖最后由 福尔摩斯 于 2013-5-18 14:55 编辑 ]
#13
peach54602013-05-19 16:31
如果你只是看到第三章,这题目等你看到文件输入输出流这章再回过头来看吧...
如果你只是看到第三章,我就不准备对你的问题做回答了,因为我越解释你越听不懂...对你的学习不好...
#14
nothingness2013-05-20 20:17
回复 13楼 peach5460
明白,还是要谢谢你
1