您的位置:首页 > 编程语言 > C语言/C++

C++流中一些有用的预设格式

2017-01-08 03:05 417 查看
在C++中有一些十分有用的预设格式,可以方便我们在进行流输出时输出想要的格式,而不再需要printf或sprintf来进行格式化输出,更“C++”化。头文件:<iostream>函数1:ios_base& boolalpha(ios_base& str)作用:把bool值用“ture”或"false"字符串输出函数2:ios_base& noboolalpha(ios_base& str)作用:把bool值不用字符串输出(即用整数输出)示例1:bool c = false;bool d = true;cout << boolalpha << c << endl << noboolalpha << d << endl;输出:false [换行] 1示例2:bool c = false;bool d = true;stringstream ss;ss << boolalpha << c << endl << noboolalpha << d << endl;cout << ss.str();输出:同上函数3:dec函数4:hex函数5:oct作用:分别按10进制、16进制、8进制输出示例:int e = 123;cout << dec << e << "-" << hex << e << "-" << oct << e << endl;输出:123-7b-173函数6:fixed 输出浮点数,小数点后保留5位,不足补0函数7:scientific 科学计数法表示浮点数,小数点后保留5位,不足补0函数8:hexfloat 按16进制输出小数函数9:defaultfloat 默认小数输出格式,不设置格式标志时,默认使用该格式函数10:internal函数11:left函数12:right作用:在输出空间中,字符对齐方式:两端对齐,左端对齐,右端对齐示例:左端对齐右端对齐比较好理解,主要是internal,在带符号数字输出时,符号在左端,字符在右端int n = -77;std::cout << "12345678" << endl;std::cout.width(8); std::cout << std::internal << n << '\n';std::cout.width(8); std::cout << std::left << n << '\n';std::cout.width(8); std::cout << std::right << n << '\n';输出:12345678- 77-77-77如果是字符串,则internal也是右端对齐char* n = "a b c";std::cout << "12345678" << endl;std::cout.width(8); std::cout << std::internal << n << '\n';std::cout.width(8); std::cout << std::left << n << '\n';std::cout.width(8); std::cout << std::right << n << '\n';输出:|12345678|| a b c|| a b c || a b c |函数13:showbase函数14:noshowbase作用:是否显示数制符号,16进制显示0x,8进制显示0示例:int n = 20;std::cout << std::dec << std::showbase << n << '\n';std::cout << std::dec << std::noshowbase << n << '\n';std::cout << std::hex << std::showbase << n << '\n';std::cout << std::hex << std::noshowbase << n << '\n';std::cout << std::oct << std::showbase << n << '\n';std::cout << std::oct << std::noshowbase << n << '\n';输出:20 20 0x14 14 024 24函数15:showpoint函数16:noshowpoint作用:是否显示小数点函数17:showpos函数18:noshowpos作用:是否显示正数的符号 “+”函数19:skipws函数20:noskipws作用:只能作用于输入流,输入时是否跳过空白符,如果是,则输入第一个不是空白符的字符,然后输入下一个不是空白符的字符,如果否,则每位空白符也被当做输入字符。空白符包括制表符(Tab),回车,空格(blank space)示例:char *n = " 1 2 3 ";char a, b, c;stringstream ss(n);cout << ss.str() << endl;ss >> skipws >> a >> b >> c;cout << a << b << c <<endl;ss.seekg(0);ss >> noskipws >> a >> b >> c;cout << a << b << c << endl;输出:| 1 2 3 ||123|| 1 |
函数21:uppercase函数22:nouppsercase作用:英文字符大写或者小写示例:std::cout << std::showbase << std::hex;std::cout << std::uppercase << 777777 << '\n';std::cout << std::nouppercase << 777777 << '\n';输出:|0XBDE31||0xbde31|
有了这些格式,C++也可以输出接近于Java那么丰富的字符串了。结合stringstream,可以在内存中改变字符串的格式,比如全部大写或者全部小写,或者在数字前加上符号、进制。
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: