• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

VC对标准C++支持怎么那么差~~各位帮忙看看这几句文件操作的代码吧!!!

child_bj 2003-01-21 11:36:02
我这段代码:
#include <fstream.h>
int main(int argc, char* argv[])
{
char ch[100];
fstream myfile;
myfile.open("text1.txt",ios::out,filebuf::sh_read);
while(myfile.getline (ch,100))
{
int num = 0;
while(ch[num]!='\0')
{
if(ch[num]!=32)
{
cout<<ch[num];
}
num++;
}
cout<<endl;
}
return 0;
}

为什么没有把文件的内容给读出来?VC6对标准C++的支持也太次了!我的代码在BCB下就工作正常。

还发先,在VC6里,我
#include <fstream>
using namespace std;

后,cout居然都不认识了!!!!真刺激人~~~

各位帮忙看看上面的代码怎么改VC才能认识吧,我是不行了~~
...全文
59 点赞 收藏 25
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sodicc 2003-01-25
看得我一头雾水。哪位改好后给他发个工程过去吧。
回复
FireFox117 2003-01-25
http://expert.csdn.net/Expert/topic/1392/1392550.xml?temp=.5808374
各位帮帮忙!
回复
child_bj 2003-01-25
http://expert.csdn.net/Expert/topic/1392/1392375.xml?temp=.9462091

请各位来领分!!

谢谢大家!代码没有一点错,就是文件放错了地方了。

谢谢大家!
回复
child_bj 2003-01-25
哦~~

谢谢Zark(金陵五月) !!我试试,我用F5运行的,可是跟EXE文件放在一个目录里的。

谢谢大家~我去试!今天晚上再来~
回复
FireFox117 2003-01-24
我也试过了,不行!是不是没有装布丁的事?明天给你答复!
回复
马志1993 2003-01-24
有偏见
回复
Zark 2003-01-24
不知道楼主为什么如此倔强!
"ios::in The file is opened for input. The original file (if it exists) will not be truncated.
明名说的是以输入方式打开,原来的文件(如果存在)将被删除。"

这句英文是说原来的文件(如果存在)将 不 被删除!!!!!!!!!!!!!!
回复
FireFox117 2003-01-24
bye!我要睡觉了!
回复
FireFox117 2003-01-24
我也是刚刚才发现!哈哈....
原来如此的简单!?笑死我也!
回复
Zark 2003-01-24
这是我的测试程序:

#include <fstream.h>

int main(int argc, char* argv[])
{
char ch[100];
fstream myfile;
myfile.open("text1.txt",ios::in,filebuf::sh_read);
while(myfile.getline (ch,100))
{
int num = 0;
while(ch[num]!='\0')
{
if(ch[num]!=32)
{
cout<<ch[num];
}
num++;
}
cout<<endl;
}
return 0;
}

这是我的输入文件text1.txt
this is a test
this is a again

这是我的结果:
thisisatest
thisisaagain
Press any key to continue

注: 如果你改成ios:in后还行,多半是由于你的text1.txt文件的位置问题.如果你是在VC6.0中用F5/RUN之类命令,此文件必须在你的.dsw/.dsp文件所在目录上;如果你在DOS窗口上或是用window explorer双击运行exe文件,此文件必面与你的exe文件在同一目录里.通常情况下VC6.0是把你的exe文件放在.dsw/.dsp目录的下级目录debug或是release.

为避免上述麻烦,建议你给文件名前加上绝对路径.
回复
FireFox117 2003-01-24
http://download.microsoft.com/download/vstudio60ent/SP5/Wideband-Full/WIN98Me/EN-US/vs6sp5.exe
---------------------------
下载地址!我正在试!不知道行不行!
回复
child_bj 2003-01-24
那估计我的就是没有补丁的原因了~

在哪能下到补丁呢?我在MS的网站上怎么没有看到?
回复
hwman 2003-01-24
我这里改成 ios::in 就正常了。不过 vc 不安装补丁时确实会有比较多的问题,特别是用 stl 的时候。
回复
child_bj 2003-01-24
呵呵,忽略了

FireFox117(火狐117) ,谢谢你!!!!
回复
child_bj 2003-01-24
仍然谢谢各位热心的帮忙,我是一直用BCB,用了有一年多了。
最近必须得用VC做东西,所以~~

lyt_lyt(罗月童) ,我的也没有错,只是应该在屏幕上显示文件内容的,可是没有显示。

Zark(金陵五月) ,那是我英文水平太次了。不好意思。

manbug(人虫) ,尽管我VC用的很次,但是我至少也知道是做成控制台程序,而且,BCB里也是这么做的。我就是做成那个“HELLO WORD”的,然后在里面自己加的代码。按照这个建立起来以后,工程已经有一个.cpp,一个.h还有一个.cpp是我放MAIN的地方。不知道VC为何一下给我建了这么多文件出来?BCB的话,就只有一个CPP而已呀。

我改成iso::in的话真的是显示不出内容。谢谢大家继续帮忙吧。各位帮忙的人我都很感谢,回头问题解决了,这道问题我放分200(得去BCB那领了,我只能在那一下放200)。谢谢VC里各位兄弟的热心!!
回复
Zark 2003-01-23
tangby(sinababy)说得对,应该是个ios::in.

这个与VC对ANSI C++的支持无关!,应该是说与MS的取名方式有关,大概GATES先生不愿意和UNIX相像,所以不叫读方式/写方式,改名叫输入/输出文件了,其实本质上ios:in (opened for input)就是以读方式打开,ios::out(opened for output)就是以写方式打开.

你是要读,是不是?那就用ios::in吧!
回复
manbug 2003-01-23
是改成ios::in就行了
回复
lyt_lyt 2003-01-23
我也测试了你的程序,只要把ios::in改称in就可以了!(用Console工程)。对于你的程序而言,从文件中读内容,当然是输入了!
回复
manbug 2003-01-23
你是怎么搞的,我试过你的代码,没有错啊,在VC中不能和TC或BC中一样写代码,像你这个程序,要用向导先建立一个空的控制台工程,然后在把你的C代码加入这个工程,就行了,我试了,一切OK,没有提示编译错误.
回复
child_bj 2003-01-23
可是我改成in了以后为什么还是不行呀~~~

ios::in The file is opened for input. The original file (if it exists) will not be truncated.
明名说的是以输入方式打开,原来的文件(如果存在)将被删除。

难道这个意思不是说的ios::in为写文件方式吗?

我觉得跟ANSI有关系,BCB5支持的C++比较新,就可以以这样的方式打开文件:
fstream myfile("text1.txt");
然后VC就不可以。
下面的代码我在BCB5下编译通过,在VC就不可以:

#include<fstream.h>
void main()
{
char ch[100];
fstream myfile("text1.txt");
while(myfile.getline(ch,1000))
{
int num = 0;
while(ch[num]!='\0')
{
if(ch[num]!=32)
{
cout<<ch[num];
}
num++;
}
cout<<endl;
}
}


回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2003-01-21 11:36
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……