动态增加和减少字符数组
Dynamically increase and decrease char arrays?
我必须用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>
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?