c++里读取一个*.txt文件

chenchen 2004-05-13 11:09:28
c++里读取一个*.txt文件把它的内容显示在屏幕上怎么编啊
文件路径e:\*.txt
dos界面的
...全文
387 点赞 收藏 31
写回复
31 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Dublue 2004-06-17
qiqi162002(qiqi)说得很清楚,强烈支持~~
回复
lei601 2004-06-17
# include <iostream>
# include <fsrtream>
using namespace std;
void main()
{
char ch;
ofstream f("e:\\*.txt");
while (f.get(ch))
cout<<ch;
return 0;
}
回复
alever513 2004-06-16
我觉得还是重定向好些:

#include <iostream>
#include <fstream>
using namespace std;

fstream fin("*.txt");
istream& in = fin;

#define cin in

int main()
{
//
...//这里的输入输出操做跟控制台一样
//
return 0;
}
回复
qiqi162002 2004-06-16
下面的代码可以原样在屏幕上输出文本的内容,空格和回车都有.
#include <fstream.h>
#include <stdlib.h>
#include<string>
void main()
{


ifstream fin("main.cpp");
if(!fin)
{
cerr<<"file con not open!"<<endl;
exit(1);
}
string str;
getline(fin,str); //在fin中取一行到str中
str+="\n"; //在str后加入换行符
cout<<str;
while(!fin.eof())
{ getline(fin,str);
str+="\n";
cout<<str;
}
fin.close();
system("PAUSE");
}
回复
qiqi162002 2004-06-16
上面基本上都讲出了实现方法,但有的程序有点小错误.例如:只#INCLUDE<fstream>没有了<iostream>.

还有如果直接用{fin>>str;cout<<str;}这样的方法,空格和回车不会显示了.
因为>>符号一遇到空格就停止插入. str里只存入单词.

用getline(str,fin)是比较理想的方法.这时str中是"aa.txt"中的一行.用READ()就有点小题大作了.它比较适合 结构 这样的数据读入.

所以:cngdzhang()的那种方法不符要求,面且他只输出一个单词^_^.
回复
liu_feng_fly 2004-06-16
// PrintTxtToConsole.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
copy(istream_iterator<string>(ifstream("aaa.txt")),istream_iterator<string>(),ostream_iterator<string>(cout,"\n"));//方法1
cout << ifstream("aaa.txt").rdbuf();//方法2
return 0;
}

回复
peter9606 2004-06-16
怎么 没有人回答?
回复
peter9606 2004-06-16
不知道重定向再这里有什么意义
麻烦给小弟解释一下
谢谢啦
回复
peter9606 2004-06-16
#include <stdio.h>
#include <io.h>
int main(void)
{
char c;
FILE *file1, *file2;
file1 = fopen(__FILE__, "r");
if (file1)
{
file2 = fopen("bak.dat", "w");
while(!feof(file1))
{
fread(&c, 1, 1, file1);
fwrite(&c, 1, 1, file2);
}
fclose(file2);
fclose(file1);
}

file2 = fopen("bak.dat", "r");
if (file2)
{
while(!feof(file2))
{
fread(&c, 1, 1, file2);
printf("%c", c);
}
fclose(file2);
}
}

这程序把自己输出
回复
路过。
学习!
回复
tatbaby 2004-06-15
cngdzhang() 的已经够了
回复
vcchunhong 2004-06-14
#include <fstream.h>
#include <stdlib.h>
void main()
{
ofstream fout("d:\\nihao.txt");
if(!fout)
{
cerr<<"file con not open!"<<endl;
exit(1);
}
for(int i=0;i<50;i++)
fout<<i<<" ";
fout.close();

ifstream fin("d:\\nihao.txt");
if(!fin)
{
cerr<<"file con not open!"<<endl;
exit(1);
}
int j;
while(fin>>j)
{
cout<<j<<" ";
}
fin.close();
cout<<endl;
}
回复
追忆青春 2004-06-14
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <string>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
ifstream in("e:\\a.txt");//文件名
if( !in )
{
cerr<<" !! unable to open files.\n";
return -1;
}

istream_iterator< string > is(in);
istream_iterator< string >eof;

vector< string >text;
copy( is, eof, back_inserter( text ) );

ostream_iterator< string >os( cout, " " );
copy( text.begin(), text.end(), os );

return 0;
}
回复
talkingmute 2004-06-14
学习!
回复
a00 2004-06-13
呵呵,
file.read((char*)&temp,sizeof(char));
可以写为
file.read(&temp,sizeof(char));
因为temp是char型,&temp就是char*了,没有必要再次强制转换。

或也许是hardsonxu(阿山)编译器需要这样做?!
回复
webnumen 2004-06-13
file.read((char*)&temp,sizeof(char));这句话
请高手具体意思解释一下
回复
cnBoysbe 2004-06-13
file.read((char*)&temp,sizeof(char));这句话
请高手具体意思解释一下
回复
martmy 2004-06-13
mark
回复
hardsonxu 2004-06-07
#include<fstream.h>

void main()
{
ifstream file("e:/aa.TXT");
char temp;

while(file)
{
file.read((char*)&temp,sizeof(char));
cout<<temp;
}

file.close();

}

这样写可以保持原有的输出格式
回复
kaphoon 2004-06-07
最简单版
std::ifstream in( "readme.txt");
std::cout << in.rdbuf();
//用缓冲
回复
发动态
发帖子
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
社区公告
暂无公告