第四周周记
C++:
1.
typename *pointr_name = new typename;
用new运算符给指针分配指定类型(长度)空间,而不用先定义变量再取地址。动态联编。
delete pointer_name;
释放内存,但不会删除指针本身。要配合地使用new和delete。
2.
char数组名、char指针以及用引号括起的字符串常量都被解释为字符串第一个字符的地址。
如果指针的类型为char,则cout显示指针指向的字符串,要显示地址则要强制类型转换或取地址,(int*)pointer或者&pointer。
char *flower;
cout<<flower; // 显示的是flower指向的字符串的内容
3.
应使用strcpy()或strncpy(),而不是赋值运算符来将字符串赋给数组。string类可以将一个string类对象赋给另一个string类对象,array类(同数组,静态内存分配)对象同,而数组不能。
4.
vector a2(4);
a2.at(1)=2.3;//将2.3赋值给a2[1]中
vector和array对象的成员函数at();可降低越界错误率。
5.
cin.getline(arr,20); // 对数组,这个getline()是istream类的一个类方法。
getline(cin,str); // 对string类对象,这个getline()不是类方法。
6.
用cout.setf(ios::boolalpha)函数调用设置了一个标记,命令cout显示true和false,而不是1和0.
7.
cctype和ctype.h,字符函数库,里面的函数可用于判断键入的字符为何种类型。
8.
cin无法识别枚举类型,因此该程序要求用户选择选项时输入一个整数,再用switch判断。
如果在类型为整型时输入一个单词而不是数字(发生类型不匹配的情况),将发生4种情况:
- n的值保持不变;
- 不匹配的输入将被留在输入队列中;
- cin对象中的一个错误标记被设置;
- 对cin方法的调用将返回false(如果被转换为bool类型)
输入错误和EOF都将导致cin返回false。重置cin的错误输入标记时用cin.clear(),同时也要重置文件尾,再用cin.get()重新输入。
对于cin方法函数调用,该函数返回cin。如果cin位于测试条件(如循环条件)中,则将被转换为bool类型。
9.
char word[50];
cin>>word; // cin将不断读取,直到遇到空白字符(换行符、空格、制表符)。
cin.getline(word,50); // cin将不断读取,直到遇到换行符(输入少于50个字符)。
10.
文件输出必须包含头文件fstream,必须声明自己的ofstream和ifstream对象,为其命名,并将其同文件关联起来。
打开文件open(),关闭文件close()。
ofstream outfile;
ofstream infile;
char filename[50];
char str[10];
outfile.open("file.txt");// 将outfile与file.txt关联起来
cin>>filename;
infile.open(filename); // 将infile与名为filename的文件关联起来
cin>>str;
outfile<<str<<endl; // 将字符串str的内容写到outfile指向的文件里
// 最后记得关闭文件,当然如果忘记关闭,程序正常终止时会将自动关闭它
创建好ofstream对象(如outfile)后,便可以像使用cout那样使用它。
outfile.open("file.txt");
如果file.txt在程序运行前不存在,open()会新建一个名为file.txt的文件。如果存在,默认情况下会将原来内容长度截断到0(即清空)再执行新的输入。
文件输出时,可以结合使用istream和eof()、fail()等方法来判断输入是否成功。
ifstream infile;
ifstream fin;
infile.open("file.txt"); // 将infile与file.txt关联起来
char filename[50];
fin.open(filename); // 将fin与名为filename的文件关联起来
double wt;
infile <<wt; // 从infile关联的文件中读取一个double型数据到wt中
char line[50];
fin.getline(line,50): // 从fin关联的文件中读取一行字符串到line数组中
// 如果试图打开一个不存在的文件用于输入,这种错误将导致后面使用ifstream对象进行输入时失败。
// 检查是否被成功打开用is_open(),如果打开成功会返回true
infile.open("file.txt");
if(!infile.is_open())
{
cout<<"Could not open the file"<<endl;
exit(EXIT_FAILURE); // exit()原型在头文件cstdlib中
}
// 也可以用good()来代替,但是没有is_open()那么广泛。
如果在使用git时出现:LF will be replaced by CRLF
$ rm -rf .git //删除 .git
git config --global core.autocrlf falsee //禁用自动转换
//再重新执行
$ git init
网友评论