我在读取c ++问题中的文件时遇到问题。请在下面找到我的代码并告诉我你的想法。我一直在"文件打开失败!"
问题:
编写一个程序,生成一个条形图,显示中西部一个小镇Prairieville的人口增长,过去100年间隔20年。该程序应该从文件中读取1900年,1920年,1940年,1960年,1980年和2000年的人口数字(最接近1000人)。对于每一年,它应显示日期和一个由每1000人组成一个星号的栏。例如,让我们使用3000,7000,10000,25000,29000和30000。
以下是图表可能如何开始的示例:
PRAIRIEVILLE人口增长
(每个*代表1000人)
1900 ***
1920 *******
1940 **********
// main.cpp
// Population Chart
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int year,population;
ifstream inputFile;
inputFile.open("People.txt");
//if (inputFile.fail())
if(!inputFile)
{
cout << "File open failure!";
}
cout << "PRAIRIEVILLE POPULATION GROWTH\n" <<endl;
cout << "(each * represents 1000 people)\n" <<endl;
while (inputFile >> population)
{
for (year =1900 ; year<=2020; year += 20)
{
cout<< year;
for (int i = 1; i <= population/1000; i++)
{
cout<<"*";
}
cout<< endl;
}
}
inputFile.close();
return 0;
}
答案 0 :(得分:0)
从您提出的问题标签,我认为您正在使用Xcode,对吗?您需要知道Xcode在哪里输出可执行文件,并且您的People.txt文件需要放在与可执行文件相同的文件夹下。在Xcode中,转到
Xcode&gt;偏好&gt;位置
“派生数据”下显示的路径是Xcode放置可执行文件的地方。它通常是〜/ Library / Developer / Xcode / DerivedData。
在那里,您可能会发现很多项目文件夹。进入对应于这个项目的文件夹并转到Build / Products / Debug,然后你会找到你的可执行文件。你能做的就是把你的People.txt放在那里。
或者您可以将“People.txt”文件的完整路径添加到inputFile.open()方法。
答案 1 :(得分:0)
ifstream open()在失败时设置errno。所以你可以获得它的字符串表示来输出失败的原因:
cout << "File open failure:" << strerror(errno);
答案 2 :(得分:0)
此帖非常有用New to Xcode can't open files in c++?此问题现已解决。原来该文件不在包含生成的可执行文件的文件夹中。谢谢:))