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 '*'