繁体   English   中英

C ++,需要帮助用strcat创建的指针!

[英]C++, need help with pointers created with strcat!

我需要在单词flare的末尾添加一个数字,具体取决于我有多少。 那部分效果很好。 我的问题是当我把它打印到屏幕上时。 我想程序输出什么(Camera :: Table [Id] - > sensor-> flare1)传感器指向的值,在这种情况下,是flare one。 如果程序要继续,它将输出指向flare2,flare3,flare4,......的值,直到达到限制。
我得到的输出如下:

lens_pos1=¨Camera::Table[Id]->sensor->flare1¨ 
lens_pos2=¨Camera::Table[Id]->sensor->flare2¨ .......  

如何输出flare1的值而不是粘贴字符串?

我想要的是以下内容:

lens_pos1=¨10.3¨ lens_pos2=¨12.4¨..... 

其中值10.3,12.4将分别取自单独的C文件中的flare1和flare2。

for(int i = 1; i <= nbflares; i++)  
{  
    char integer_string[32];  
    sprintf(integer_string, "%d", i);  
    char flare[100] = "Camera::Table[Id]->sensor->flare";

    strcat(flare,integer_string);

    fprintf(yyout, "lens_pos%d=\"%s\" ",i,flare);
}

您无法在C / C ++中访问类似的变量。 您必须重新设计“传感器”结构以包含数组而不是单个耀斑,并通过索引访问数组:Camera :: Table [Id] - > sensor-> flare [1],Camera :: Table [Id] - > sensor-> flare [2]等

这不能用C ++完成。 一些解释型语言可能允许这样的事情,因为源代码的文本在程序运行时仍然存在。 但是在C ++中,当你编译程序时,所有类和变量的名称都会丢失。 当它到达正在运行的可执行文件时,实际的机器指令只是处理偏移量和内存地址。

因此,您需要重新设计数据的存储方式。

有没有办法在不使用数组的情况下访问它们?

从技术上讲,是的。 但只能使用更复杂的方案来处理更复杂的数据结构(例如链表或地图)。

你为什么要避免使用数组呢? 现在,您有一系列相同类型的变量,您希望通过数字来区分它们的名称末尾。 数组是一系列相同类型的变量,它们通过数组中的索引进行区分。 这几乎是完美的搭配。

例如,如果你有一个flares阵列,那么你可以简单地做一些事情:

for(int i = 0; i < nbflares; i++)  
{  
    fprintf(yyout, "lens_pos%d=\"%f\" ", i, Camera::Table[Id]->sensor->flares[i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM