我搜索并搜索了这个主题,但仍然没有,所以我正在诉诸这个。
注意:根本无法使用矢量
所以我试图在这个程序中打开一个文本文件并将数字读入一个数组。程序打开它,并读取它们(我假设),但当我读回数字时,它们是垃圾数字。不确定哪里出错了,不胜感激。这是我的代码:
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void readNumbers(int numbers[]);
const int MAX_SIZE = 12;
int main()
{
int numbers[MAX_SIZE];
readNumbers(numbers);
for (int i = 0; i < MAX_SIZE; i++)
{
cout << numbers[i] << endl;
}
return 0;
}
void readNumbers(int numbers[])
{
int num = 0;
ifstream inFile;
inFile.open("numbers.txt");
if (!inFile)
{
cout << "Cannot open the file" << endl;
}
else
{
inFile >> num;
while(inFile)
{
int i = 0;
numbers[i] += num;
i++;
inFile >> num;
}
}
inFile.close();
}
输出:
1606416400
32767
0
0
0
0
0
0
0
0
0
0
答案 0 :(得分:2)
i变量是循环的本地变量。尝试将其移到外面:
lastName.set(i,lastName.get(i).substring(1,lastName.get(i).length().toLowerCase()));
答案 1 :(得分:1)
您的数组numbers[]
未初始化,除了垃圾值numbers[i] += num;
因此它打印垃圾数字。
如果增量很重要,请使用:
int numbers[MAX_SIZE]={0} //while declaration
如果不是:
numbers[i]=num //inside while
同样int i=0
应该在外面,而我将始终在0
内。
答案 2 :(得分:0)
你没有初始化你的numbers
数组,因此它会有垃圾。在[{1}}中存储+=
时,为什么使用num
?你不应该在那里使用作业吗?
numbers[i]
(而且,如前所述,numbers[i] = num;
索引需要在循环外声明,否则你总是在数字中添加/赋值给第一个元素。)
答案 3 :(得分:0)
修复了数组使用中的一些错误。
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void readNumbers(std::string* numbers);
const int MAX_SIZE = 12;
int nSize = 0;
int main()
{
std::string numbers[MAX_SIZE];
readNumbers(numbers);
for (int i = 0; i < nSize; i++)
{
cout << numbers[i] << endl;
}
return 0;
}
void readNumbers(std::string* numbers)
{
ifstream inFile;
inFile.open("numbers.txt");
if (!inFile)
{
cout << "Cannot open the file" << endl;
}
else
{
while(!inFile.eof())
{
char temp[100] = {0};
inFile.getline(temp, 100);
numbers[nSize++].assign(temp);
if (nSize == MAX_SIZE) break;
}
}
inFile.close();
}