所以,我从我的教科书中复制了一个程序,给它一个测试,并且输出有问题。该计划很简单:
(当我运行程序VS说程序已经过时;我不知道问题是否存在。)
//This program reads data from a file into an array
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
const int Array_size = 10; //array size
int numbers[Array_size]; //array with 10 elements
int count = 0; //loop counter variable
ifstream inputFile; //input file stream object
//opent the file
inputFile.open("C:/TenNumbers.txt");
if (!inputFile)
{
cout << "Unable to open file" << endl;
return 0;
}
//read the numbers from the file into the array
while (count < Array_size && inputFile >> numbers[count])
count++;
//close the file
inputFile.close();
//display the numbers read
cout << "The numbers are: ";
for (count = 0; count < Array_size; count++)
cout << numbers[count] << " ";
cout << endl;
system("pause");
return 0;
}
输出结果为:
,控制台调试是:
&#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Visual Studio 2015 \ Projects \ project7.3 \ Debug \ project7.3.exe&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ ntdll.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ kernel32.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ KernelBase.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ msvcp140d.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ vcruntime140d.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ advapi32.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ ucrtbased.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ msvcrt.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ sechost.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ rpcrt4.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ sspicli.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ cryptbase.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ bcryptprimitives.dll&#39;。符号已加载。 &#39; project7.3.exe&#39; (Win32):已加载&#39; C:\ Windows \ SysWOW64 \ kernel.appcore.dll&#39;。符号已加载。 线程0x6e44已退出,代码为0(0x0)。 线程0x68ac已退出代码0(0x0)。 线程0x5978已退出,代码为0(0x0)。 线程0x56ec已退出,代码为0(0x0)。 该程序&#39; [7220] project7.3.exe&#39;已退出代码0(0x0)。
以下是notepad ++中文本文件的内容。我根据在线发现的信息将编码从UTF8更改为ANSI:
//此文件支持visual studio 2015中的program7.3 101 102 103 104 105 106 107 108 109 110
答案 0 :(得分:1)
以下块中的消息具有误导性。
if (!inputFile)
{
cout << "file open" << endl;
}
应该是
cout << "Unable to open file" << endl;
之后,无论如何,当你应该拯救时,你继续阅读数据。
if (!inputFile)
{
cout << "Unable to open file" << endl;
return EXIT_FAILUIRE;
}
由于没有从文件中读取任何内容,您将获得虚假数据。
然后,您继续显示所有数据。您只需显示已成功读取的数据。使用:
//display the numbers read
cout << "The numbers are: ";
for (int i = 0; i < count; i++)
cout << numbers[i] << " ";
cout << endl;