删除 C++ 中的字符

deleting chars in c++

本文关键字:字符 C++ 删除      更新时间:2023-10-16

我正在使用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";

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

我对你的代码做了一些最小的更改,以便它编译和运行。主要问题是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";
}