我想使用std :: vector来动态分配内存.场景是:
int neededLength = computeLength(); // some logic here
// this will allocate the buffer
std::vector<TCHAR> buffer( neededLength );
// call a function that accepts TCHAR* and the number of elements
callFunction( &(buffer[0]), buffer.size() );
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但这&(buffer[0])看起来很难看.是否有更优雅的方式来实现相同的目标?
-edit-我发送的是二进制而不是字符串.我的测试是使用html页面所以在这个例子中我只使用一个字符串但我的问题是关于二进制,向量和使用ostream进行调试.我让这清楚了一些混乱.
我有以下代码:
cout << string(&v[0]).substr(0, len);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来打印字符串v与cout长度len?我想做v [len] = 0但是我的一个断言被抛出,大小为1.我的代码是:
vector<char> v;
v.reserve(1024*16); //required
v.resize(1); //so we can do &v[0]
recv(sockfd, &v[0], v.capacity(), 0);
while (l > 0)
{
cout << string(&v[0]).substr(0, l);
recv(sockfd, &v[0], v.capacity(), 0);
}
cout << "the size is " << v.size();
Run Code Online (Sandbox Code Playgroud) 我正在用C++编写一个程序.在我的程序中,我需要在一个函数内创建一个动态大小的数组,但是这个数组也应该可以访问其他函数.我不会在这里发布我的代码,只写一个虚拟示例.
char *array;
void function_1() {
array = new char(3);
array[0] = "value 1";
array[1] = "value 2";
array[2] = "value 3";
}
void function_2() {
array[0] = "new value 1";
}
int main() {
function_1();
function_2();
delete[] array;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我不确定,如果数组将存在于function_1之外,它初始化,直到我分配数组的内存.或者数组在一个函数中只有一个局部变量的行为.这意味着,存储数组值的内存将在函数完成后被解除定位,并且我的数组的内存地址可以在我的程序中稍后重新编译.
谢谢.