Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ifstream到动态分配的数组_C++_Memory_Dynamic_Ifstream - Fatal编程技术网

C++ ifstream到动态分配的数组

C++ ifstream到动态分配的数组,c++,memory,dynamic,ifstream,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; c

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

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

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

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

后来,当我查看结构成员时,我发现一次只提取了一个chracter。例如,第一个元素的等级是“t”,西服是“w”,然后它继续进入西服,下一张牌的等级是“o”和“s”。。。显然,每次提取一个字符。如何获取以空格结尾的整个字符串?

问题在于:

fin >> *temp;

<stream> >> <char>
fin>>*温度;
>> 
因此它将只读取一个字符。
您正在从流中读取字符

您想要的是读取字符串(或单词)

>
//这表示为:
fin>>温度;//注号“*”

如果您使用std::string和std::vector编写此代码,大约需要10行代码。在C中用C++编写这样的函数会使书写更加困难。

不能使用向量,这是一个类项目。如果你能使用向量,你就不用C++了。这也使问题变得更困难了。告诉我的老师。啊,我知道这是个简单的句法问题。我不能把我的头缠在我生命的指针上;我想这会尝试将字符串分配给内存地址,我会得到一个错误。非常感谢你。
<stream>  >> <C-String>

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