C++流通過IO操縱符實(shí)現(xiàn)格式化控制,如setw設(shè)置字段寬度、setprecision控制精度、fixed/scientific調(diào)整浮點(diǎn)格式,left/right設(shè)置對(duì)齊,setfill指定填充字符;支持dec/hex/oct進(jìn)制輸出,showbase顯示前綴,showpos顯示正號(hào);輸入時(shí)可用getline讀取分隔數(shù)據(jù),ws跳過空白,ignore忽略內(nèi)容;自定義類型需重載<<和>>運(yùn)算符以支持流操作,注意setw僅作用于下次操作,setprecision在fixed下才表示小數(shù)位數(shù)。
在C++中,流(stream)不僅是輸入輸出的基礎(chǔ)工具,還能通過多種方式實(shí)現(xiàn)格式化控制。相比C語言的printf
和scanf
,C++的流操作更安全、更靈活,尤其適合復(fù)雜類型的處理。掌握流的格式化技巧,能讓你的程序輸出更清晰,輸入更可靠。
C++提供了豐富的IO操縱符(manipulators),用于控制流的行為。這些操縱符定義在<iomanip>
頭文件中,可以直接插入到流中使用。
常見格式化操縱符包括:
示例:
立即學(xué)習(xí)“C++免費(fèi)學(xué)習(xí)筆記(深入)”;
#include <iostream> #include <iomanip> int main() { double value = 3.1415926; std::cout << std::fixed << std::setprecision(2); std::cout << "Value: " << value << std::endl; std::cout << std::setw(10) << std::setfill('*') << 42 << std::endl; return 0; }
輸出:
Value: 3.14 ********42
流支持以不同進(jìn)制輸出整數(shù),也能控制是否顯示正號(hào)、進(jìn)制前綴等。
示例:
立即學(xué)習(xí)“C++免費(fèi)學(xué)習(xí)筆記(深入)”;
int num = 255; std::cout << std::showbase << std::showpos; std::cout << "Hex: " << std::hex << num << '\n'; std::cout << "Oct: " << std::oct << num << '\n'; std::cout << "Dec: " << std::dec << num << std::endl;
輸出:
Hex: +0xff Oct: +0377 Dec: +255
輸入流同樣支持格式控制。例如,跳過特定字符、限制讀取長(zhǎng)度、按字段讀取等。
std::ws
跳過空白字符std::getline
讀取整行,支持自定義分隔符istream::ignore
忽略部分輸入示例:讀取逗號(hào)分隔的數(shù)據(jù)
std::string name; int age; std::cout << "Enter name,age: "; std::getline(std::cin, name, ','); std::cin >> age;
若輸入Alice,25
,name為"Alice",age為25。
為了讓自定義類支持流操作,需重載<<
和>>
運(yùn)算符。
例如:
struct Point { double x, y; }; std::ostream& operator<<(std::ostream& os, const Point& p) { return os << "(" << p.x << ", " << p.y << ")"; } std::istream& operator>>(std::istream& is, Point& p) { char ch; if (is >> ch && ch == '(') is >> p.x >> ch >> p.y >> ch; else is.setstate(std::ios::failbit); return is; }
這樣就可以像內(nèi)置類型一樣使用cin >> point
和cout << point
。
基本上就這些。C++流的格式化能力強(qiáng)大,關(guān)鍵是熟悉常用操縱符和重載方法。不復(fù)雜但容易忽略細(xì)節(jié),比如setw
只對(duì)下一次操作有效,或setprecision
在fixed
模式下才表示小數(shù)位數(shù)。多練習(xí)就能熟練掌握。
以上就是c++++如何使用流(stream)進(jìn)行格式化輸入輸出 _c++流輸入輸出格式化技巧的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
c++怎么學(xué)習(xí)?c++怎么入門?c++在哪學(xué)?c++怎么學(xué)才快?不用擔(dān)心,這里為大家提供了c++速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)