有一个TXT文件,每行三个数字,排列如下,用fstream类的read函数读进字符数组里面,怎么总是错位的?

11122132143215216217118219111011想把第一列的提出来,用了下面的代码:#include"stdafx.h"#include<string>#... 1 1 1
2 2 1
3 2 1
4 32 1
5 2 1
6 2 1
7 1 1
8 2 1
9 1 1
10 1 1

想把第一列的提出来,用了下面的代码:

#include "stdafx.h"
#include <string>
#include <fstream>
#include<iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
fstream FileInput;
FileInput.open("D:\\W.txt",ios::in);
if(!FileInput)
{ cout<<"D:\\W.txt不?能¨¹打䨰开a!ê?"<<endl;
return 0;
}
char ch[6];
while(!FileInput.eof())// ,i<2
{
FileInput.read(ch,6);
std::cout<<ch[0];
}
FileInput.close();
}

还有其他问题,如果能帮助解决,再送200分答谢。
不能打开那里是复制过来时形成的乱码,有高手愿意帮忙的话请站内信密下
展开
 我来答
笃侠6A
2012-06-15 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3259万
展开全部
对于这种有确定格式的文本文件,一般不用read成员函数来读取(read一般用于二进制文件),可以使用提取符(>>)直接将所需的值读入相应的变量。比如,这段代码:
char ch[6];
while(!FileInput.eof())// ,i<2
{
FileInput.read(ch,6);
std::cout<<ch[0];
}
可以改为:
int a,b,c;
FileInput >>a >>b >>c;
while(!FileInput.eof())// ,i<2
{
cout <<a <<endl;
FileInput >>a >>b >>c;
}
这样,a就是第1列数据,b就是第2列数据,c就是第3列数据。
philafox
2012-06-15 · TA获得超过253个赞
知道小有建树答主
回答量:124
采纳率:100%
帮助的人:94.3万
展开全部
因为FileInput.read(ch,6)没有读完一行,每次只读入6个字节。

如果改成每次完整读完一行,你可以改成:
string line;
getline(FileInput, line);
cout << line[0];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式