C C 字串格式化

2021-09-13 21:14:15 字數 1359 閱讀 9677

scanf()類似,但scanf()以鍵盤為輸入,但sscanf()以固定字串為輸入源

int sscanf(char *buffer, const char *format, [argument]...);

// format:乙個或多個]type | ' ' | '\t' | '\n' | 非%符號}

// * 表示跳過此資料不讀入,如(%*d、%*s) 遇到整數不讀入、遇到字串不讀入

// 表示a、b、c中選一,[d]表示有沒有d都可以

// width 表示讀取的寬度

// type 表示%s,%d之類

// %*[width] type 表示滿足該條件的被過濾掉,不會向目標引數中寫入值

將格式化後的資料寫入到某個字串中,snprintf()更安全

int sprintf( char *buffer, const char *format, [argument]...);

int snprintf(char *buffer, size_t size, const char *format, [argument] ...);

// buffer:char型指標,指向將要寫入的字串的緩衝區。

// size: 表示當前buffer的最大容量

// format:格式化字串。

// [argument]...:可選引數,可以是任何型別的資料。

// 返回值:字串長度(strlen)

stringstream ss;

string a;

ss.setf(); // 設定一些屬性

ss << setprecision(15) << a; // 設定讀取的位數,並將a中資料儲存到流中

string str;

ss >> str; // 將流中資料輸出儲存到str中

​ int num;

ss << num; // 將流中資料轉化為整型儲存在num中

​ // note: stringstream 解析物件時,是以空格和回車鍵為分隔符的,若想以其他字元為分隔符,需要使用getline()函式

ifstream fin(path, std::ios::in);   // 檔案流

while (!fin.eof())

​ stringstream ss(str); // 建立內容為str的字串流

string c;

while (getline(ss, c, ','))

C C 格式化字串說明

說明 1 可以在 和字母之間插進數字表示最大場寬。例如 3d 表示輸出3位整型數,不夠3位右對齊。9.2f表示輸出場寬為9的浮點數,其中小數字為2,整數字為6,小數點佔一位,不夠9位右對齊。8s 表示輸出8個字元的字串,不夠8個字元右對齊。如果字串的長度 或整型數字數超過說明的場寬,將按其實際長度輸...

C C 格式化字串說明

1.格式化規定符 符號 作用 d 十進位制有符號整數 u 十進位制無符號整數 f 浮點數 s 字串 c 單個字元 p 指標的值 e 指數形式的浮點數 x,x 無符號以十六進製制表示的整數 0 無符號以八進位制表示的整數 g 自動選擇合適的表示法 說明 1 可以在 和字母之間插進數字表示最大場寬。例如...

字串格式化

sprintf snprintf snprintf std stringstream std strstream boost lexical cast boost format cstring format 1 sprintf 使用 sprintf 不安全,輕則破壞資料的準確性,重則程式崩潰。請看下...