ifstream动态分配数组

时间:2013-02-27 23:52:18

标签: c++ memory dynamic ifstream

我有一个文本文件,如下所示:

“两铲三铲四锹”......等等。

我正在使用此代码提取单词:

   char *temp;
   temp = new char[20];

   fin >> *temp;
   charCount=stringLength(temp);
   deckPtr->rank = new char[charCount+1];
   stringCopy(temp, deckPtr->rank);

   fin >> *temp;
   charCount=stringLength(temp);
   deckPtr->suit = new char[charCount+1];
   stringCopy(temp, deckPtr->suit);

第二部分和第三部分处于一个循环中,在写完所有结构成员后,它会转到下一个“卡片”。

(stringCopy和stringLength是我自己写的函数,经过测试可以工作)

后来,当我对结构成员进行cout时,我发现一次只提取了一个字符。例如,第一个元素的等级是't',套装是'w',然后它继续进入下一张牌的套装和等级'o'和's'...显然,一个角色在正在提取时间。如何获取整个字符串,终止于空格?

1 个答案:

答案 0 :(得分:1)

问题在于:

fin >> *temp;

<stream> >> <char>

所以它只会读取一个字母 您正在从流中读取字符。

你想要的是读一个字符串(或一个单词)

<stream>  >> <C-String>

// This is expressed as:
fin >> temp; // Note no '*'

如果你使用std :: string和std :: vector编写它大约10行代码。在C语言中用一些C ++特性编写它会使写入更加困难。