从自定义集合(struct Array)中读取数据
read data from a custom collection (struct Array)
我是c++
的初学者。所以请帮我把这件事做好。
试图从集合中读取,在我尝试过的一个版本的实现中,有一些来自控制台的消息,另一个测试…显示数字,所以它可能是指向字符串的指针…
代码如下
DataCollection.h
typedef struct _DataC
{
char* buffer;
UINT Id;
} DataC;
void GetDataC( int ArrSize, DataC** DArr );
DataCollection.cpp
#include "DataCollection.h"
void GetDataC( int ArrSize, DataC** DArr )
{
int count = 0;
int strSize = 10;
*DArr = (DataC*)CoTaskMemAlloc( ArrSize * sizeof(DataC));
DataC* CurData = *DArr;
char TestS[] = "SomeText00";
for ( int count = 0; count < ArrSize; count++,CurData++ )
{
TestS[strSize-1] = count + '0';
CurData->Id = count;
CurData->buffer = (char*)malloc(sizeof(char)*strSize);
strcpy(CurData->buffer, TestS);
}
}
测试集合:
int main(void)
{
StpWatch Stw;long ResSw;
DataC* TestDataArr;// maybe use DataC TestDataArr[] instead...
GetDataC(100000, &TestDataArr);
}
如何在循环中读取集合?
……
std::cout<<TestDataArr[count].buffer<<std::endl;
或
std::cout<<TestDataArr->buffer<<std::endl;
读取循环中每个元素的正确实现是什么?
感谢您的宝贵时间。
DataC* TestDataArr
和DataC TestDataArr[]
是一回事。也就是说,当您尝试引用TestDataArr时,您可能会做以下两件事之一:
TestDataArr[index].buffer
或
(TestDataArr + index)->buffer
因为TestDataArr
是一个指针,你必须在使用它的任何成员之前遵从它,这就是index所做的。使用第一种方法,作为数组索引,指针在数组的index
处解引用,然后您可以使用.
访问对象的成员。第二种方法是index
,它将指针推进到内存位置,但不会对指针进行解引用,因此必须使用->
才能访问其成员。
因此,要在循环中打印缓冲区,可以使用以下两种方法:
std::cout << TestDataArr[count].buffer << std::endl;
或
std::cout << (TestDataArr + count)->buffer << std::endl;
您提到的闪烁可能是因为TestS[strSize-1] = count + '0';
,其中count + '0'
创建了ASCII范围之外的字符。
问题在TestS[strSize-1] = count + '0';
。当您传递ArrSize == 100 0000
时,在for
循环中,count + '0'
值在某个时刻超过了char
的范围,并且您在[0-31]
范围内获得一个字符值(不可打印字符)。至少使用
TestS[strSize-1] = '0' + count % (126 - '0');
TestS
的最后一个字符将在[48-126](ASCII可打印字符)范围内更改。
相关文章:
- 如何在ros2中从rosbag2读取数据
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 使用C++从磁卡读卡器MT188读取数据
- HDF5 简单读取数据集失败
- 嵌套结构,从由空行分隔的文件中读取数据
- 不要从输入队列套接字读取数据
- 从文件中读取数据,操作员>>
- 如何从excel文件中读取数据并存储到变量中?
- C++:从文件中读取x y数据会产生无限循环吗
- 无法通过FT232RL读取数据
- 如何从QNetworkReply读取数据?
- C++ 逐行从文件(包含空格)读取数据
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- 从多个 tcp 连接读取数据
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- Qt TCP服务器不从客户端读取数据
- 累积从 C++11 中的文件中读取数据的整数
- 从 txt 文件中读取数据的最简单方法
- 从 txt 文件中读取数据的 Getline