c++文件
c++各位大佬这个从文件读出来的数据怎么是地址呢 有没有从文件读出各种类型数据的方法呀#include "stdafx.h"
#include <fstream>
#include<iostream>
using namespace std;
int main()
{
int a, b,i;
ifstream indata;
ofstream outdata("D:\\sh.txt", ios::app);
if (!outdata)
{
cerr << "打开失败!";
return -1;
}
for (i = 0; i < 8; i++)
{
cin >> a;
}
for (i = 0; i < 8; i++)
{
outdata << a;
}
outdata.close();
indata.open("D:\\sh.txt");
for (i = 0; i < 8; i++)
{
indata >> b;
}
for (i = 0; i < 8; i++)
{
cout << b;
}
indata.close();
return 0;
}
有两个问题:
1. 定义的数组变量int a, b,在使用之前要初始化。
2. 这条语句:indata >> b;是不是应该是:
indata >> b;
这么使用是越界了。所以变量b的值就是随机数。 wwhywhy 发表于 2019-4-4 10:38
有两个问题:
1. 定义的数组变量int a, b,在使用之前要初始化。
2. 这条语句:indata >> b;是 ...
我按你说的改了 还是地址 不行
for (i = 0; i < 8; i++)
{
indata >> b;
}
应该是这一句的问题 wwhywhy 发表于 2019-4-4 10:38
有两个问题:
1. 定义的数组变量int a, b,在使用之前要初始化。
2. 这条语句:indata >> b;是 ...
文件里的数据 就没有到 b 里面
首先,你输出的时候使用的app模式
ofstream outdata("D:\\sh.txt", ios::app);
那么输出内容的时候只会在之后附加内容,
而打开文件的时候是从头开始读取的,那么sh.txt之前包含的东西便会影响输出结果
第二、你输出的时候没有在数据中间加任何分隔符
outdata << a;
试想,你a到a分别等于0 1 2 3 4 5 6 7,那么输出的时候是什么样
01234567 ,重新读取的时候会把这01234567当一个整体,于是
b=1234567 ,而b-b读不出来任何东西,
反复执行的话,数据还会变成012345670123456701234567,这个时候再读,连b都不能读出正确的数据了
问题就这两个问题,修改后的程序如下#include <fstream>
#include<iostream>
using namespace std;
int main()
{
int a, b, i;
ifstream indata;
ofstream outdata("D:\\sh.txt");//去掉ios:app标识
if (!outdata)
{
cerr << "打开失败!";
return -1;
}
for (i = 0; i < 8; i++)
{
cin >> a ;
}
for (i = 0; i < 8; i++)
{
outdata << a <<" ";//加入分隔符
}
outdata.close();
indata.open("D:\\sh.txt");
for (i = 0; i < 8; i++)
{
indata >> b;
}
for (i = 0; i < 8; i++)
{
cout << b<<" ";
}
indata.close();
system("pause");
return 0;
}
页:
[1]