使用字符串从文件中读取专辑信息时调用 Abort
Posted
技术标签:
【中文标题】使用字符串从文件中读取专辑信息时调用 Abort【英文标题】:Abort Called when using Strings to Read Album Information from a file 【发布时间】:2015-10-25 21:02:46 【问题描述】:当我运行我的代码时已经调用了 abort,尽管它构建成功。谁能给我提示如何使我的代码更好地运行以便不调用 abort ? 它引用了两个文本文件,但这是我迄今为止的代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
ifstream fin("Album Name1.txt");
string album_name;
string artist = album_name.substr(0, album_name.find("-"));
cout << "Artist : " << artist << endl;
string album = album_name.substr(album_name.find("-"), album_name.rfind("-"));
cout << " Album Title: " << album << endl;
string song = album_name.substr(album_name.length(), album_name.rfind("-"));
cout << " Song Title : " << song << endl;
string time = album_name.substr(album_name.find("2"), (album_name.find("2")));
string minutes = time.substr(0, 0);
string seconds = time.substr(1, 2);
string minutes_seconds = minutes + ":" + seconds;
cout << "Run Time: " << minutes_seconds << endl;
cout << "Copyright (c) Bruce Springsteen, 1984";
fin.close();
fin.clear();
ifstream ifin("Album Name2.txt");
string album2_name;
string artist2 = album2_name.substr(0, album2_name.find("-"));
cout << "Artist : " << artist2 << endl;
string album2 = album2_name.substr(album2_name.find("-"), album2_name.rfind("-"));
cout << " Album Title: " << album2 << endl;
string song2 = album2_name.substr(album2_name.length(), album2_name.rfind("-"));
cout << " Song Title : " << song2 << endl;
string time2 = album2_name.substr(album2_name.find("2"), (album2_name.find("2")));
string minutes2 = time2.substr(0, 0);
string seconds2 = time2.substr(1, 2);
string minutes_seconds2 = minutes2 + ":" + seconds2;
cout << "Run Time: " << minutes_seconds2 << endl;
cout << "Copyright (c) Maroon 5, 2004";
ifin.close();
return 0;
【问题讨论】:
请不要在没有上下文的情况下转储整个代码清单。在寻求帮助之前将您的代码编辑为Minimal, Complete, and Verifiable example。 如果您能告诉我们程序在正常工作时应该做什么,这可能会有所帮助。另外,请包括输入文件结构的示例。最后,仅仅通过查看您的代码,它看起来根本没有使用ifstreams
。查看cplusplus.com/reference/fstream/ifstream 获取提示
它应该从文本文件中读取有关艺术家的专辑详细信息,然后在 cout 中列出它们。
【参考方案1】:
您忘记设置或读取专辑名称,因此整个算法正在处理一个空字符串。
假设您要从输入文件中读取专辑名称,您应该这样写:
ifstream fin("Album Name1.txt");
string album_name;
std::getline(fin,album_name);
【讨论】:
以上是关于使用字符串从文件中读取专辑信息时调用 Abort的主要内容,如果未能解决你的问题,请参考以下文章