文件读取和输出错误

时间:2013-05-18 15:56:32

标签: c++ file-io char codeblocks freetype

我使用bellow结构'Menu'来存储菜单数据;在我能够从文件中正确读取之后,我将使用for循环来加载每个菜单的所有菜单数据。变量是char *的向量,用于存储每个菜单中的任何选项。然后它与freetype库一起使用,以显示使用opengl创建的菜单按钮上的菜单选项。

char n = 0,
 tempBuffer[32];
FILE * menu = fopen ("MenuDatum.txt","r");
fgets (tempBuffer , 32 , menu);
Menue[n].variable.push_back(tempBuffer);//"text here");  <<
fclose (menu);

字符串文字,注释'&lt;&lt;'是可行的,但缓冲区输出奇怪的字符基于使用时的tempbuffer的大小(如需要):如果它的大小32我得到4c,或如果它是16我得到lk等;但如果我只是使用cout输出它正确显示文件中的内容...所以我既没有输入或输出的问题,但我呢?另外,'char * tempBuffer =“text here”;'将通过我的结构在图书馆中正确显示'“text here”'等。就像字符串文字一样。

文件中的文字只是“文字在这里”

这也是菜单结构;我没有粘贴所有代码,因为它太广泛了

struct Drawings::menues
{
    std::vector<char*> variable;
    bool orrient;
    float xPos, xPosF, yPos, yPosF, CR, CB, CG, CA, sliceWidth, sliceSpacing;
    unsigned char options;
} Menue[3];

1 个答案:

答案 0 :(得分:0)

没有看到代码,很难说。我的水晶球(R)告诉我你有例如存储这些“字符串”的向量。由于它们只是指针并且它们使用本地缓冲区,因此它们无法正确存储数据并且以后会被损坏。

std::ifstream in("MenuDatum.txt");
std::string line;
if(!getline(in, line))
    throw std::runtime_error("failed to read MenuDatum.txt");

std::vector<std::string> variable;
variable.push_back(line);