在C++程式设计中,输入是流程中最常见的操作方式众所周知。而cout做为C++国际标准复本的输入流,能同时实现将统计数据输入到国际标准输入设备(比如掌控台)或文档中。在前述合作开发中,输入统计数据一般来说须要满足用户很大的文档格式明确要求,比如留存指定四位数的十进制、依照很大的翻转形式输入等。因而,cout序列化是C++程式设计中十分关键的两个各方面。责任编辑将如是说cout序列化的基本上用语,主要包括怎样掌控输入的长度、精确度和翻转形式等。
基本上用语
C++中的cout流是国际标准输入流,常见于将统计数据输入到掌控台或文档中。cout序列化能使输入结论更为耐用和更易写作。掌控输入的长度、精确度和翻转形式是cout序列化的基本上用语。
要掌控输入的长度,能采用width()形式,比如:
int x =123;cout.width(5);cout << x;//输入:123(长度为5,右翻转,用字符串充填)
假如输入的前述长度严重不足预设的长度,能采用fill()形式选定充填字符串:
int x =123;cout.width(5);cout.fill(*);cout << x;//输入:**123(长度为5,右翻转,用*号充填)
要掌控输入的精确度,能采用precision()形式,例如:
double pi =3.1415926535;cout.precision(3);cout << pi;//输入:3.14(留存3位十进制)
要掌控翻转形式,能采用setf()形式和unsetf()形式,比如:
在 C++的 I/O 操作方式中,透过 setf()和 unsetf()形式能对文档格式象征展开增设和中止增设,进而掌控输入的文档格式。当中,setf()形式用作增设文档格式象征,unsetf()形式用作中止文档格式象征的增设。
int x =123;cout.setf(ios::left);cout.width(5);cout << x;//输入:123(长度为5,左翻转,用字符串充填)cout.unsetf(ios::left);cout.setf(ios::right);cout.width(5);cout << x;//输入:123(长度为5,右翻转,用字符串充填)
除以内基本上用语,还能采用其他的文档格式象征和操纵符来掌控输入文档格式,下面将详细如是说。
文档格式象征
在C++中,文档格式象征是一些特定的象征,用作掌控cout输入的文档格式。这些象征能透过setf()形式来增设,也能透过unsetf()形式来清除。下面我们将详细如是说这些象征的作用和用语。
掌控精确度掌控输入的精确度是一种常见的需求,C++中提供了两种形式:采用精确度象征或者采用setprecision()形式。当中,精确度象征用作掌控整数和浮点数的输出精确度,它会影响到十进制点后面的数字个数。比如,采用setprecision(3)会将浮点数输入为三位十进制。另一各方面,setprecision()形式能直接增设输入的十进制四位数,不受精确度象征的影响。比如,cout << setprecision(3)<<3.1415926;会将浮点数输入为3.142。透过 setf()和 unsetf()形式能对文档格式象征展开增设和中止增设,进而掌控输入的文档格式。当中,setf()形式用作增设文档格式象征,unsetf()形式用作中止文档格式象征的增设。
cout.setf( flag );cout.setf( flag, field );
当中,flag 是文档格式象征,能是下面的常量众所周知:
field 是域象征,能是下面的常量众所周知:
假如省略 field 参数,则默认为当前的域象征。
操纵符
操纵符(Manipulator)是一种特殊的函数,它能修改流中的一些参数,以掌控输出的文档格式。C++中提供了许多操纵符,主要包括用作掌控输入长度、精确度、翻转形式、充填字符串等的setw、setprecision、setfill,以及用作结束当前行并刷新缓冲区的endl等。此外,C++也允许用户自定义操纵符,以满足用户特定的需求。
setw():用作增设输入的最小长度,即在输入字段长度小于选定长度时,会在左侧充填字符串或其他字符串。比如:
int num =42;cout << setw(5)<< num << endl;//输入”42″cout << setw(3)<< num << endl;//输入”42″
setprecision():用作增设输入浮点数的精确度。比如:
double pi =3.1415926;cout << setprecision(3)<< pi << endl;//输入”3.14″cout << setprecision(6)<< pi << endl;//输入”3.14159″
setfill():用作增设在setw()函数选定长度时采用的充填字符串。比如:
int num =42;cout << setw(5)<< setfill(*)<< num << endl;//输入”***42″
endl:用作结束当前行并刷新缓冲区,以确保输入内容被立即显示。比如:
cout <<“Hello”<< endl;
自定义操纵符:除上述国际标准操纵符外,C++也允许用户自定义操纵符。一般来说,自定义操纵符是两个函数,接受两个ostream类型的参数,并返回两个同样是ostream类型的对象。比如:
//自定义操纵符,用作输入十进制部分class Fraction {public: Fraction(int p): precision(p){} friend ostream& operator<<(ostream& os, const Fraction& f){ os <<“.”<< setprecision(f.precision)<< fixed <<(f.value – floor(f.value)); return os;}private: int precision; double value;};//自定义操纵符,打印两个换行符ostream& mymanip(ostream& os){ cout <<“\n”<< endl; return os;}int main(){ double pi =3.14159265359; cout <<“The value of pi is “<< fixed << setprecision(10)<< pi << Fraction(5)<< endl; cout << mymanip <<“Hello”<< endl; return 0;}
注意,自定义操纵符的命名应该具有较好的可读性和描述性,以免让其他合作开发者困惑。此外,建议避免定义与国际标准操纵符相同或相似的名称,以免引起歧义。