C++中将Vector中的数据存入文件

C++语言 码拜 10年前 (2015-05-11) 3757次浏览 0个评论
 

代码如下,输出的文件中没有内容……不知道为嘛……哪里有问题么?为什么?要怎么修改?

#include<iostream>
#include<cstring>
#include<vector>
#include<fstream>
#include<cstdlib>
using namespace std;
class Student_Info{
public:
	vector<char> name;
	vector<double> score;
};
int main()
{
	Student_Info S;
	char name;
	double score;
	vector<char>::const_iterator n;
	vector<double>::const_iterator s;
	ofstream OutFile("students.txt", ios::out|ios::binary );
	while (cin >> name >> score){
		S.name.push_back(name);
		S.score.push_back(score);
	}
	for (n = S.name.begin(); n != S.name.end(); n++){
		for (s = S.score.begin(); s != S.score.end(); s++){
			OutFile << *n << " " << *s << endl;
		}
	}
	OutFile.close();
	system("pause");
	return 0;
}
5分
测试数据是什么, 我怀疑char name这里有问题,这样定义只能输入一个字符,第二个字符非数字就会导致while失败,改成string及相应vector的地方改下试试
10分
    while (cin >> name >> score){
        S.name.push_back(name);
        S.score.push_back(score);
    }
    for (n = S.name.begin(); n != S.name.end(); n++){
        for (s = S.score.begin(); s != S.score.end(); s++){
            OutFile << *n << ” ” << *s << endl;
        }
    }
1.你的输入是说:一个name对应一个score,但是你写入文件的时候,一个name对应N个score;
2.你确定你的push_back成功了吗?你在输入文件的时候可以先输出看一遍.(我怀疑你输入失败了)
乍看起来c++的cin、cout在输入、输出上比c的scanf、printf简单,不用格式控制符!
但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。
摒弃cin、cout!
使用scanf、printf。
5分
找个空闲,帮你看了一下,你把写文件的部分两个for循环改掉(一个即可,不然逻辑错误).然后添加:OutFile.flush()刷新一下输出缓存即可.
刷新缓冲取  的
引用 2 楼 baijiaheizhiganmao 的回复:

    while (cin >> name >> score){
        S.name.push_back(name);
        S.score.push_back(score);
    }
    for (n = S.name.begin(); n != S.name.end(); n++){
        for (s = S.score.begin(); s != S.score.end(); s++){
            OutFile << *n << ” ” << *s << endl;
        }
    }
1.你的输入是说:一个name对应一个score,但是你写入文件的时候,一个name对应N个score;
2.你确定你的push_back成功了吗?你在输入文件的时候可以先输出看一遍.(我怀疑你输入失败了)

的确……输入失败了……我把vector<char>换成了string,然后就成功了~

引用 1 楼 fly_dragon_fly 的回复:

测试数据是什么, 我怀疑char name这里有问题,这样定义只能输入一个字符,第二个字符非数字就会导致while失败,改成string及相应vector的地方改下试试

是的,用char的时候输入失败了~

引用 4 楼 baijiaheizhiganmao 的回复:

找个空闲,帮你看了一下,你把写文件的部分两个for循环改掉(一个即可,不然逻辑错误).然后添加:OutFile.flush()刷新一下输出缓存即可.

多谢多谢,这个我之前没意识到,由于经验不足……

引用 8 楼 wdx7266 的回复:
Quote: 引用 4 楼 baijiaheizhiganmao 的回复:

找个空闲,帮你看了一下,你把写文件的部分两个for循环改掉(一个即可,不然逻辑错误).然后添加:OutFile.flush()刷新一下输出缓存即可.

多谢多谢,这个我之前没意识到,由于经验不足……

多写一点,code前想清楚即可.


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++中将Vector中的数据存入文件
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!