字符串格式化,求高手指教.....
如果我有一个字符窜string text="1234567.12",
当传入参数pattern是"#,###,###,##0",text能够格式化成:1,234,567
当传入参数pattern是"#,###,###,##0.0",text能够格式化成:1,234,567.1
当传入参数pattern是"#,###,###,##0.000",text能够格式化成:1,234,567.120
当传入参数pattern是"#,###,###,##0.0000",text能够格式化成:1,234,567.1200
想写这样的一个函数,请高手指教以下,谢谢
string change(string pattern){string text="1234567.12";//根据pattern格式化textreturn text;}
#include<iostream>#include<string>using namespace std;string change(string pattern){ string text="1234567.12"; int pdotIndex = pattern.find('.') == string.npos ? pattern.size() : pattern.find('.'); int tdotIndex = text.find('.') == string.npos ? text.size() : text.find('.'); int i = tdotIndex - 1, j = pdotIndex - 1 ; for (; i >= 0 ; i--,j--) { if(pattern[j]==',') j--; pattern = pattern.replace(j,1,1,text[i]); } if(pdotIndex != pattern.size()) { i = tdotIndex ; j = pdotIndex ; for (;i<text.size() && j<pattern.size();i++,j++) { pattern = pattern.replace(j,1,1,text[i]); } } int nIndex = pattern.find_last_of('#'); if(nIndex != string.npos) pattern = pattern.substr(nIndex+1); text = pattern; return text;}int main(){ cout<<change("#,###,###,##0"); cout<<change("#,###,###,##0.0"); cout<<change("#,###,###,##0.0000"); return 0;}