首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串格式化,

2012-11-04 
字符串格式化,求高手指教.....如果我有一个字符窜string text1234567.12,当传入参数pattern是#,###,##

字符串格式化,求高手指教.....
如果我有一个字符窜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
想写这样的一个函数,请高手指教以下,谢谢

C/C++ code
string change(string pattern){string text="1234567.12";//根据pattern格式化textreturn text;}


[解决办法]
C/C++ code
#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;} 

热点排行