- object n.对象(在C++中)
- string类型的字符串,求长不可以用cstring头文件里的strlen(),而是要用变量名.length()!!!变量名.size()也可以!!!
然后.length()或者.size()这个函数返回一个整型值(string类型字符串的长度) - 由于vector是标准库,而数组则是内置类型。所以如果你追求程序的执行效率的话那就用数组吧。
- 可确定数组元素个数的时候尽量使用数组。 对于指针以及NEW操作符迷糊的时候使用vector**,因为它内置有内存管理器。
- 关于
#include<iomanip>
,iomanip是I/O流控制头文件。
其中我遇到了这个头文件的一个有用的函数,名为setw();
setw( n)函数的设置字段宽度为n位。setw(int n)只是对直接跟在<<后的输出数据起作用,而在之后的<<需要在之前再一次使用setw;当后面紧跟着的输出字段长度小于n的时候,在该字段前面用空格补齐;当输出字段长度大于n时,全部整体输出。(这是针对在c!o!u!t!<!<!后的setw()的作用)
setw(n)一般是这样用,setw()函数写在前头后面跟一个变量。
cin >> setw( nm_size ) >> user_name;
其中nm_size是咱们设定的一个整型变量,user_name可以是字符串(string型的或者C风格型的),然后你输入的user_name字符串的长度(多少个字符)不能超过nm_size限制的长度,多出来的长度都给咔咔截掉,只保留nm_size个字符。(这是针对在c!i!n!>!>!后的setw()的作用)
eg.运用实例:
仅供参考,作为对比,咱们可以知道了setw()函数的不同用法,就是这样的!
结合这个例子咱不难明白了setw(n)这个用法。 - 与c风格的字符串不同,array数组没有表示其结束的标记值(null)。?
array是一个内置数组 - C++初学者建议用vector类
- 关于push_back()函数,可以用在vector上,比如
vector<int> ivec;
int ival;
while ( cin >> ival )
ivec.push_back( ival );
//...
在读取了用户输入的数时,push_back函数把数直接安排在vector类的尾部,也就是说相当于在当前(动态)数组存储的最后一个元素后头插进这个数
string类也有这个函数,用法一样。
- .size()函数也可以用于vector上,作用是求vector的长度
const int array_size = 128;
int ia[ array_size ];
int ival, icnt = 0;
while ( cin >> ival && icnt < array_size )
ia[ icnt++ ] = ival;
这个代码的思想可以控制array里的数据不会越界(要越界了立即停止输入数据进array
- 关于文件的读写,自己先练一练手(多余的头文件给1.7练习做准备)
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<fstream>
using namespace std;
int main()
{
string name1,name2;
cin>>name1>>name2;
ofstream outfile("1-7.txt",ios_base::app);
if(!outfile)
{
cerr<<"Cannot open this file!";
}
else
{
outfile<<name1<<name2<<endl;
}
ifstream infile("1-7.txt");
if(!infile)
{
cerr<<"Cannot open this file!";
}
else
{
string a;
while(infile>>a)
{
cout<<a;
}
}
return 0;
}
结果:
- 关于vector类的string型变量的定义
vector<string>text;
- 注意ifstream,ofstream不要写错了,然后一些马虎问题要注意好。
- 程序也可以手动任意地方停止,如图所示
int main()//矫正的版本
{
ifstream infile("1-7.txt");
if(!infile)
{
cerr << "oops! unable to open input file\n";
return -1;
}
ofstream outfile("1-7out.txt");
if(!outfile)
{
cerr << "oops! unable to open input file\n";
return -2;
}
//...
}
如果走了if,不管是走上面的还是下面的if,然后走到return的时候,主函数返回一个值,程序结束。就这样,程序可以人为地提早停止掉。注意这种写法,尤其是应对非!法!输!入!或者非!法!操!作!的时候
- 使用vector或queue等时,尤其需要注意用size()函数时,由于size()函数返回的是一个unsigned int类型的变量。因此该返回值不能和负数比较大小
for (int ix = 0; ix < text.size(); ix ++)
{
outfile << text[ ix ] << ' ';//同样方式输出到指定文件里去
}
这里整型数ix和无符号整型数比较了大小,编译器此时会提出警告:
string err[num_err];
这样来定义一个string类型的数组
第一章就此完结撒花~奥力给!