0

我有一个文本文件,内容如下:

“二锹三锹四锹”……等等。

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

   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 是我自己编写的函数,它们已经过测试可以工作)

后来,当我计算结构成员时,我发现一次只提取了一个字符。例如,第一个元素的等级是't',花色是'w',然后它继续进入下一张带有'o'和's'的牌的花色和等级......显然,一个字符在正在提取时间。如何获取整个字符串,以空格结尾?

4

1 回答 1

1

问题是:

fin >> *temp;

<stream> >> <char>

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

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

<stream>  >> <C-String>

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

如果您使用 std::string 和 std::vector 编写此代码,则大约需要 10 行代码。像这样用 C 语言编写它并带有一些 C++ 特性会使正确编写变得更加困难。

于 2013-02-28T00:01:19.407 回答