【发布时间】:2019-04-11 05:33:57
【问题描述】:
所以我一直在研究这个程序,它应该对数组中的数字进行一些操作。但这些操作不是问题。问题是我似乎无法理解如何将输入文件中的 4 个数字放入数组中。
当我使用带有数组和索引 2 的输出语句检查它时,它输出零。而不是数字 4。
所有 numbers.txt 文件将包括:2 4 3 5
#include <iostream> //cin, cout, endl
#include <iomanip> //manipulators such as setw, setprecision
#include <fstream> //File I/O
#include <cmath> //math operators like pow
#include <string> //string
#include <cassert> //function assert
using namespace std;
typedef unsigned int uint;
const string fileName = "numbers.txt";
int main()
{
uint arrayWithNumbers[100];
uint currentNumber = 0;
uint limiter = 0;
ifstream inData;
inData.open(fileName);
if(inData)
{
while(inData >> currentNumber)
{
arrayWithNumbers[limiter] = currentNumber;
limiter++;
}//while for array processing
}//if check for file
inData.close();
cout << arrayWithNumbers[2] << endl;
}//main
【问题讨论】:
-
理论上,它会输出 3,因为数组是从零开始的。
-
如果您在调试器中逐行执行代码,它的行为是否符合您的预期?它是否读取文件中应包含的值?
-
你的
.txt-文件是什么样的? -
哎呀,我在数字之间有逗号,然后我把它们拿出来,它起作用了。多谢,伙计。为什么逗号会这样停止输入?或者当您以这种方式输出时,逗号是否等于零?
-
当您执行
inData >> currentNumber时,代码会尝试读取无符号整数(currentNumber的类型)并且仅 读取无符号整数。如果输入中有任何字符无法解析为无符号整数(例如逗号),则输入将失败。这将导致循环结束,并且您打印数组的 uninitialized 元素,一个未初始化的元素,其值为 indeterminate 并且当您打印它时,您将拥有 undefined行为.
标签: c++