在数组C ++中插入整数

时间:2014-07-22 06:31:32

标签: c++ char

我编写了以下代码来转换字符串' aaadddbbbccc'到' a3d3b3c3' :

#include <iostream>
#include <string.h>
using namespace std;

    void stringCompression(char *str,char *newStr){
        int a[256] = {0};
        int newCount = 0;
        for(int i = 0; i < strlen(str) ; i++){
            int j = str[i];
            if (a[j] == 0 && strlen(newStr) <= strlen(str)){
                a[j] = 1 ;
                newStr[newCount] = str[i];
                newCount++;
                int count = 0;
                for (int n = i; n < strlen(str); n++){
                    if(str[i] == str[n]){
                        count = count + 1;
                    }
                }
                newStr[newCount] =(char) count;
                newCount++ ;
            } else if (strlen(newStr) > strlen(str)){
                strcpy(newStr,str);
            }
        }
    }

    int main() {
        char str[] = "abcdabcdabcd";
        char *newStr = new char[strlen(str)+1];
        stringCompression(str,newStr);
        cout << newStr;
        return 0;
    }

我的问题在于步骤

newStr[newCount] =(char) count;

即使已插入,但输出不是a3b3c3d3而是a*squarebox*b*squarebox*c*squarebox*d*squarebox*。 squarebox是2 * 2矩阵,其中一个值是所需的数字。我正在使用eclipse IDE。 。我将衷心感谢您的帮助。我怎么能纠正这个。我使用的是正确的方法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

问题在于

newStr[newCount] =(char) count;

转换数字&#34; count&#34;根据ascii表(http://www.asciitable.com/)进入与该数字对应的字符,即&#34;文本结尾&#34;对于&#34; 3&#34;,这与任何数字都不对应。

你应该转换&#34; count&#34;换成字符串。在这里看到例如: Easiest way to convert int to string in C++

但是,请注意它可能超过一位数,例如,如果count是&#34; 11&#34;,则字符串表示将需要两个字母。

答案 1 :(得分:0)

嘿,你必须使用http://www.cplusplus.com/reference/cstdlib/itoa/将整数转换为字符串