與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 不安全,輕則破壞資料的準確性,重則程式崩潰。請看下...