C++改错题。麻烦帮忙解析一下,整理一下该题涉及的知识点,谢谢。

#include <iostream.h>
#include <fstream>
using namespace std;
void WriteFile(char *x)
{
ofstream out1;
//********1********
out1.open("modi3.txt", );
out1 << x << ' ';
out1.close();
}
void ClearFile()
{
ofstream out1;
out1.open("modi3.txt");
out1.close();
}
class TestClass
{
public:
TestClass()
{
cout<<"Hello"<<endl;
WriteFile("Hello");
}
~TestClass()
{
cout<<"Test"<<endl;
WriteFile("Test");
}
};
void main()
{
ClearFile();
try
{
//********2********
throw 1;
}
catch(int)
{
cout<<"出现异常情况"<<endl;
WriteFile("出现异常情况");
}
}

第一点:
out1.open("modi3.txt", ); 逗号不要了,直接打开就可以了。

在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:
void open(const char* filename,int mode,int access);
参数:
filename:
要打开的文件名
mode:要打开文件的方式
access:打开文件的属性
打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:
ios::app:以追加的方式打开文件
ios::ate:文件打开后定位到文件尾,
ios:app就包含有此属性
ios::binary:以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in:文件以输入方式打开(文件数据输入到内存)
ios::out:文件以输出方式打开(内存数据输出到文件)
ios::nocreate:不建立文件,所以文件不存在时打开失败ios::noreplace
:不覆盖文件,所以打开文件时如果文件存在失败ios::trunc:
如果文件存在,把文件长度设为0 可以用“或”把以上属性连接起来,如ios::out|ios::binary

打开文件的属性取值是:0:普通文件,打开访问1:只读文件2:隐含文件
4:系统文件可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性打开文件。
例如:以二进制输入方式打开文件
c:\config.sys
fstream file1;
file1.open("c:\\config.sys",ios::binary|ios::in,0);
如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:
file1.open("c:\\config.sys"); <=> file1.open("c:\\config.sys",ios::in|ios::out,0);

第二点:
try -throw-catch的解释,就是获取try程序段中丢出来的异常,并执行catch段程序。例子中就是实现此功能。并把异常写到文件中。

try
{
//程序中抛出异常
throw value;
}
catch(valuetype v)
{
//例外处理程序段
}
语法小结:throw抛出值,catch接受,当然,throw必须在“try语句块”中才有效。

第三:下面是测试后的程序,没有什么改动,直接用就可以了,回创建一个文件在运行目录下:请参考:
#include "stdafx.h"
//
// int main(int argc, char* argv[])
// {
// printf("Hello World!\n");
// return 0;
// }
//
#include <iostream.h>
#include <fstream>
using namespace std;
void WriteFile(char *x)
{
ofstream out1; //********1********
out1.open("modi3.txt");
out1 << "example!";
out1 << x << ' ';
out1.close();
}
void ClearFile()
{
ofstream out1;
out1.open("modi3.txt");
out1.close();
}
class TestClass
{
public: TestClass()
{
cout<<"Hello"<<endl; WriteFile("Hello");
}
~TestClass()
{
cout<<"Test"<<endl;
WriteFile("Test");
}
};
void main()
{
ClearFile();
try
{//********2********
throw 1;
}

catch(int)
{
cout<<"出现异常情况"<<endl;
WriteFile("出现异常情况");
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C++的改错题,求大神帮忙看一下怎么做
这句话的意思是show函数是二义性调用。D:\\EBOOK\\C++\\main.cpp|19|note: candidates are: void B::show()| D:\\EBOOK\\C++\\main.cpp|9|note: void A::show()| 这里说不知道调用哪一个 ||=== 构建 失败: 1 error(s), 0 warning(s) (0 分, 1 秒) ===| ...

谁可以帮我做一下这个C++C语言的作业
1 main()c++语言的每个表达式的结束都需要加上分号;故第6.9行错误,正确如下;6 k=1 ;9 for(i=m;i!=n;i+=k)2、程序功能为:判断从键盘上输入的一个字符,并按下列要求输出。若该字符是数字 输出 字符串"0-9";若该字符是大写字母 输出字符串"A-Z";若该字符是小写字母 输出字符串"a...

c++二级改错填空大题我都只调试了一下没保存有分吗?
只要你点了保存按钮。计算机就帮你保存好了。这跟你直接去点文件下面的保存是效果完全一样的。所以该有的分还是有的。

求解,C++语言中,这个程序不管怎么输入,结果都是不能构成三角形,求改错...
读取部分没有错误,逻辑有点小问题,修改如下:include <stdio.h> include <math.h> main (){ double a,b,c,s,area;printf("请输入三角形a,b,c的值:");scanf ("%lf%lf%lf",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ printf ("能够构成三角形");s=(a+b+c)\/2; \/\/ 先...

计算机C++二级机试的难度和书后面样卷的难度差不多吗?
判断素数问题是C语言中的一个基本算法,不仅会在程序设计中会考到,而且往往在程序填空和程序改错中也会有所涉及,因此,考生应对该知识点认真复习。3 程序设计中应注意的问题3.1 熟悉编程环境根据2007年9月教育部考试中心颁布的新大纲,二级C语言的编程环境由TC2.0改为VC++6.0,考生应该熟练掌握VC++6.0的使用方法,虽然...

求一些JAVA基础的程序练习题目~~~
此外,Java中取消了c\/c++中的结构和联合,消除了不必要的麻烦。 4.自动内存管理 Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法: Read r=new Read(); r.work(); 语句Read r=new Read();在堆栈...

如何学习C++?
我入门了。其实很简单。先静下心来!!!什么都不要想!!看书,写程序。知识点再简单,也不要瞧不起它。同一个知识点,换种思路,就能编写另外一个不同的程序。举一反三。恭喜你。你离高手不远了!

计算机二级C语言100套上机填空题和改错题
南开二级C语言上机100题1、 改错题1下列给定程序的功能是:读入一个整数(2<=k《=10000》,打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!试题程序:#inclu...

请问一下,计算机二级C语言考试的考试包含什么内容?
二级重点考察:数据类型以及转化、循环、函数传值问题、指针调用二维数组的形式、结构体成员的调用形式、与字符数组有关的问题(比如字符平移、删除或增加特定字符等)、基本的链表和文件操作。机试题:(题目略)第一题:include <stdio.h> include <stdlib.h> define N 5 typedef struct node...

数据结构线性表几个基本操作无法实现,大神们来帮忙解决一下_百度...
然后那些觉得数据结构很难的同学, 我想他们应该会很看重数据结构的吧, 然后就一天到晚捧着一本数据结构, 这样不会觉得很累吗看而且因为觉得很难, 就容易不相信自己, 学的效率也不会很好, 个人认为数据结构很好学, 很容易学, 或许这有点妄自菲薄吧, 但是因为我觉得很容易, 当然就会觉得自己没问题, 学得很轻松...

相似回答