早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于C++中ifstreamin的使用//f0501.cpp//向量参数传递//不懂的是voidinput(VVI&m)函数中的ifstreamin这几句:voidinput(VVI&m){ifstreamin("abc.txt");intn,t;in>>n;m.resize(n);for(strings;n--&&getline(in,s);){cout

题目详情
关于C++中 ifstream in 的使用
// f0501.cpp
// 向量参数传递
//
不懂的是void input(VVI& m)函数中的ifstream in这几句:
void input(VVI& m)
{
ifstream in("abc.txt");
int n,t;
in>>n;
m.resize(n);
for(string s; n-- && getline(in,s); )
{
cout < n;这一句作用是什么?之前百度知道里有回答说是“n 每个向量的元素个数”,但我单独把n输出的时候结果输出的是文件里的第一个数据,怎么会是向量的元素个数?
然后 for(istringstream sin(s); sin>>t; m[m.size()-n-1].push_back(t)) ; 这一句的m[m.size()-n-1]是什么东西?.size()是确定向量元素个数(包括数组吗?),如果前面in>>n;得到的是向量元素个数,那 m.size()-n-1 岂不是 -1?也就是m[-1]?m[m.size()-n-1]到底是怎么确定向量元素的?
本人刚学c++,
▼优质解答
答案和解析
〉in是自定义的吧?可以定义为in,也可以定义为cin等
--是的.
〉ifstream in("abc.in")括号里的语句可以打开哪些文件呢?包括数组、结构体吗?
--最好只用它来读含有文字的文件.倒不是说二进制文件不能用它读,而是因为ifstream本意就是为了读取字符设计的,用它来读二进制文件再作转换反而低效率.你说的数组、结构体如果是写在二进制文件里面的,最好别.
〉in>>n;这一句作用是什么?
-- 把文件最开始的部分作为整数读出来,写入整数n.
〉.size()是确定向量元素个数(包括数组吗?)
--是的.
〉如果前面in>>n;得到的是向量元素个数,那 m.size()-n-1 岂不是 -1?
注意这个语句是在一个大循环里面:
for(string s; n-- && getline(in,s); )
n是在不断递减的,每次减一.所以m.size()-n-1在这个循环里不停地增加,从0到m.size()-1.