删除c ++中的字符

时间:2012-08-11 23:26:07

标签: c++ xcode string memory random

我使用Xcode在C ++中创建一个程序,它将生成随机字符串,但是当我这样做时,它会消耗大量的RAM。我尝试过使用.erase();和.clear();但似乎都不起作用。

这是我的代码:

void randStringMake(char *s, int l)
{
    // AlphaNumaric characters
    static const char AlphaNumaric[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "1234567890";

    for(int x = 0; x < l; x++) {
        s[x]=AlphaNumaric[rand() % (sizeof(AlphaNumaric) - 1)];
    }
    s[l] = 0;
}

char randString;

randStringMake(randString, 10);

std::cout << std::string(&randString) << "\n";

所以我想我的问题是,如何从内存中删除字符串?

1 个答案:

答案 0 :(得分:0)

我对您的代码进行了一些最小的更改,以便编译和运行。主要问题是randString被声明为单个char,它应该是一个足以容纳生成的字符串和空终止符的数组。

请注意,发布的代码不需要std::string,并且不应导致过多的内存使用。如果您仍然遇到问题,则代码中没有显示。

#include <iostream>
#include <cstdlib>

void randStringMake(char *s, int l)
{
    // AlphaNumaric characters
    static const char AlphaNumaric[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "1234567890";

    for(int x = 0; x < l; x++) {
        s[x]=AlphaNumaric[rand() % (sizeof(AlphaNumaric) - 1)];
    }
    s[l] = 0;
}

int main()
{
    // randString should be an array to hold 10 chars + null terminator
    char randString[11];

    randStringMake(randString, 10);

    std::cout << randString << "\n";
}