将一串数字转换成字符串,并每3个数字间加个逗号,有什么好算法吗?

时间:2022-09-12 06:18:01
如数字1111111转换为字符串1,111,111

有没有什么好的算法?

5 个解决方案

#1



void FormString(CString& strText, const int DIV)
{
int nLen = strText.GetLength();
if(nLen > DIV)
{
int nIndex = nLen;
while(nIndex > DIV)
{
nIndex -= DIV;
strText.Insert(nIndex, _T(","));
}
}
}

// 调用
CString strText = _T("1111111");
FormString(strText, 3);
AfxMessageBox(strText);

#2


引用 1 楼 visualeleven 的回复:
C/C++ code

void FormString(CString& strText, const int DIV)
{
    int nLen = strText.GetLength();
    if(nLen > DIV)
    {
        int nIndex = nLen;
        while(nIndex > DIV)
        {
     ……


好像不错,比我的简单,我试试

#3



// 优化一下函数
void FormString(CString& strText, const int DIV)
{
int nIndex = strText.GetLength();
while(nIndex > DIV)
{
nIndex -= DIV;
strText.Insert(nIndex, _T(","));
}
}

#4


引用 3 楼 visualeleven 的回复:
C/C++ code

// 优化一下函数
void FormString(CString& strText, const int DIV)
{
    int nIndex = strText.GetLength();
    while(nIndex > DIV)
    {
        nIndex -= DIV;
        strText.Insert(nIndex,……


呵呵,我也发现这个问题了,我是从前往后插的,感觉不如你这个好,

#5


/*begin this file*/
#include<stdio.h>
#include<string.h>
#include<stdarg.h>
#define BUFSIZE 100

int main(){
int a=123456789;
int x[3];
x[0]=3;    
x[1]=2;
x[2]=4; 
/**************以上是传进来的值****************************/

char szTmp[BUFSIZE] ;
char buf[BUFSIZE];
int i =0; 
int offset=0;

        sprintf(szTmp,"%d",a);             //将整数转换为字符串。
do{
    memset(buf,0,BUFSIZE);
    strncat(buf,szTmp+offset,x[i]);
    offset +=x[i];
    if(i == 3-1){
        printf("%s",buf);
        break ;    
    }                               //这里if为了处理最后一个逗号,恶心死我了。
printf("%s,",buf);
i++;
}while(i<3);
        return 0;
}
/*endof this file*/


算法不好。hello word 级别的程序。见笑。

#1



void FormString(CString& strText, const int DIV)
{
int nLen = strText.GetLength();
if(nLen > DIV)
{
int nIndex = nLen;
while(nIndex > DIV)
{
nIndex -= DIV;
strText.Insert(nIndex, _T(","));
}
}
}

// 调用
CString strText = _T("1111111");
FormString(strText, 3);
AfxMessageBox(strText);

#2


引用 1 楼 visualeleven 的回复:
C/C++ code

void FormString(CString&amp; strText, const int DIV)
{
    int nLen = strText.GetLength();
    if(nLen > DIV)
    {
        int nIndex = nLen;
        while(nIndex > DIV)
        {
     ……


好像不错,比我的简单,我试试

#3



// 优化一下函数
void FormString(CString& strText, const int DIV)
{
int nIndex = strText.GetLength();
while(nIndex > DIV)
{
nIndex -= DIV;
strText.Insert(nIndex, _T(","));
}
}

#4


引用 3 楼 visualeleven 的回复:
C/C++ code

// 优化一下函数
void FormString(CString&amp; strText, const int DIV)
{
    int nIndex = strText.GetLength();
    while(nIndex > DIV)
    {
        nIndex -= DIV;
        strText.Insert(nIndex,……


呵呵,我也发现这个问题了,我是从前往后插的,感觉不如你这个好,

#5


/*begin this file*/
#include<stdio.h>
#include<string.h>
#include<stdarg.h>
#define BUFSIZE 100

int main(){
int a=123456789;
int x[3];
x[0]=3;    
x[1]=2;
x[2]=4; 
/**************以上是传进来的值****************************/

char szTmp[BUFSIZE] ;
char buf[BUFSIZE];
int i =0; 
int offset=0;

        sprintf(szTmp,"%d",a);             //将整数转换为字符串。
do{
    memset(buf,0,BUFSIZE);
    strncat(buf,szTmp+offset,x[i]);
    offset +=x[i];
    if(i == 3-1){
        printf("%s",buf);
        break ;    
    }                               //这里if为了处理最后一个逗号,恶心死我了。
printf("%s,",buf);
i++;
}while(i<3);
        return 0;
}
/*endof this file*/


算法不好。hello word 级别的程序。见笑。