C++ iStream, If-Else & Vectors
C++ iStream, If-Else & Vectors
我有这个iStream函数来读取.txt文件中的数据,格式为:
Pink Floyd: Dark Side of the Moon
0:01:30 - Speak to Me
我的功能几乎完美。
以下是我无法解决的问题。1) 当每个曲目都添加到专辑中时,它会打印(输出)第一个专辑的x
副本,每个副本都附带下一个曲目。2) 创建新专辑时,会保留上一张专辑中的旧曲目,并继续逐个添加。(所以最后一张专辑有所有专辑中的每一首曲目)
显然,我希望每张专辑只印一次,每张专辑都只有自己的歌曲。。。如有任何帮助,我们将不胜感激。谢谢
我发现您的代码有很多问题。
stringstream stringstreamFirst(line);
您没有使用变量stringstreamFirst
,此时line
为空。
Album anAlbum(artistName,albumTitle,trackVector);
这行有很多问题。
- 它使用了错误的值
在第一行中,artistName
、albumTitle
和TrackVector
为空。当你最终看到一张新专辑时,artistName
、albumTitle
和TrackVector
是上一张专辑的,而不是当前专辑的。当你进入专辑中的曲目时,这些值是正确的,但当你想创建一个新的专辑对象时,这些数值就不正确了 - 它放错地方了
如上所述,此语句为输入文件中的每一行创建一个Album
对象。当您在输入文件中遇到新相册条目时,才是创建新相册对象的正确位置
stringstream stringstreamNew(line);
stringstream stringstreamNewNew(line);
为什么名称复杂,为什么需要两个变量?另一种选择是只使用一个stringstream
,创建为while
循环的第一行。
if(!(第[8]=='-'行))
else if(第[8]=='-'列)
不要像这样复制布尔条件。如果你的意思是else
(这就是你的意思),就用else
。该行是专辑条目或曲目条目;没有别的了。
else//这些行缺少
您没有任何错误处理。如果你不能解析什么应该是专辑条目,或者什么应该是曲目条目,该怎么办?
你需要做什么(伪代码):
while (getline(istr, line)) {
stringstream linestream (line);
if (line looks like an album line) {
if (not the first line in the file) {
// Create an album using the artist name, album title, and track vector
// and add this album onto the vector of albums
}
// Parse the line for artist name and album title, preferably handling errors
// Clear the trackVector that now pertains to the previous album
}
else {
// Parse the line for track duration and name, preferably handling errors
// Add the track to the track vector.
}
}
// Create an album to cover the last album plus set of tracks
Album
是否可能存储对其构造函数参数的引用(甚至指针)?
不要这样做,这意味着专辑之间只有一个名为trackVector
的曲目矢量共享,并不断添加到中
您应该在Album
中有一个addTrack
成员,或者在读取所有轨道之前不构造Album
,这取决于Album
可变是否合理。
此外,您从未修改过aC
-您希望artistName = artistName
实现什么?
- 我的简单if-else语句是如何无法访问的代码
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- 使用if-else将数字转换为单词
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++ If/Else 语句被跳过
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 如何将 if else 语句重写为 switch 语句
- 在 C++ 中的 if-else if- else 语句期间更改变量
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 具有嵌套 if-else 的循环的时间复杂度
- 为什么无论输入如何,所有 if-else 语句都会打印?
- 简化对两个布尔值的 4 个 if/else 检查
- 如何在C++中创建 if else 循环而不是多个嵌套?
- 为什么切换 if else 语句的顺序会导致错误?
- 如何使用 if else 语句
- if/else 语句输出由于加号或减号而未显示正确的消息
- 如何解释 #if/#else 位域?(VC++菜鸟)
- C++ iStream, If-Else & Vectors