动态增加和减少字符数组

Dynamically increase and decrease char arrays?

本文关键字:字符 数组 增加 动态      更新时间:2023-10-16

我必须用UDP发送数据。缓冲区字段的类型为char。我还必须对我发送的内容进行加密/解密。这是我的加密/解密代码。

const unsigned BUFFER_SIZE = 128;
char data[BUFFER_SIZE];
cout << "Enter something." << endl;
cin.getline(data, BUFFER_SIZE);
cout << data;
char outchar[BUFFER_SIZE];

for(int i = 0; i < strlen(data); i++)
{
    //outchar[i] = data[i];
            outchar[i] = encr[(int)data[i]];
            cout << outchar[i];
}
cout << "Correct so far" << endl;

char transchar[BUFFER_SIZE];
for(int j = 0; j < strlen(outchar); j++)
{
transchar[j] = decr[(int)outchar[j]];
cout << transchar[j]; // prints out decrypted text and unused space!
}

这里的问题是,使用固定大小的char意味着缓冲区中有很多未使用的空间。在提供的代码中,它被打印到屏幕上。

有没有办法动态地增加和减少缓冲区(char数组(的大小,这样我就不会得到未使用的空间?

编辑:我认为有些事情不清楚:每个字母都必须加密和解密单词没有加密,组成它们的字母是!到目前为止给出的建议是将单词翻译成数组。我需要角色。

第2版:已删除。

第三版:俄罗斯人,你一定要爱他们。非常感谢来自莫斯科的弗拉德!

唯一的方法是动态分配所需大小的内存。您可以使用标准类std::string来代替手动执行此操作。要将存储的数据作为char数组传递,您可以使用成员函数c_str()data()

例如

std::string data;
std::cout << "Enter something." << std::endl;
std::getline( std::cin, data );
std::cout << data;
std::string outchar;
outchar.reserve( data.size() );

for(int i = 0; i < data.size(); i++)
{
    //outchar[i] = data[i];
            outchar.push_back( encr[ (int)data[i] ] );
            std::cout << outchar.back();
}

要使用std::string,您需要包含标头<string>