我有一个文本文件,如下所示:
“两铲三铲四锹”......等等。
我正在使用此代码提取单词:
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'...显然,一个角色在正在提取时间。如何获取整个字符串,终止于空格?
答案 0 :(得分:1)
问题在于:
fin >> *temp;
<stream> >> <char>
所以它只会读取一个字母 您正在从流中读取字符。
你想要的是读一个字符串(或一个单词)
<stream> >> <C-String>
// This is expressed as:
fin >> temp; // Note no '*'
如果你使用std :: string和std :: vector编写它大约10行代码。在C语言中用一些C ++特性编写它会使写入更加困难。