我正在创建一个只从文本文件中读取整数的程序。我想创建一个读取整数并将它们存储在数组中的函数,以便稍后我可以使用该数组对它们进行冒泡排序。这是我到目前为止,但我得到的输出是一些随机-803234 ....数字:
void read(int A[max], int& numbers) {
ifstream file("ints.txt");
if (file.is_open()) {
file >> numbers;
for (int i = 0; i < numbers; i++) {
cout << "numbers: " << A[i] << endl;
}
file.close();
}
cout << "numbers in array: " << A[numbers] << endl;
}
答案 0 :(得分:2)
std::vector<int> read_ints(std::istream& is)
{
std::vector<int> result;
std::copy(std::istream_iterator<int>(is),
std::istream_iterator<int>(),
std::back_inserter(result));
return result;
}
如果你不能使用矢量,你就会遇到问题,因为你现在需要检查文件的结尾和数组中的空间不足......
此函数将检查两者,并返回已放入缓冲区的整数数:
template<size_t N>
size_t read_ints(int (&dest)[N], std::istream& is)
{
size_t i = 0;
while (i < N && is >> dest[i]) {
++i;
}
return i;
}
非模板版本:
#define BUFFER_LEN 100
size_t read_ints(int (&dest)[BUFFER_LEN], std::istream& is)
{
size_t i = 0;
while (i < BUFFER_LEN && is >> dest[i]) {
++i;
}
return i;
}
答案 1 :(得分:0)
您不会在任何时候将数字存储在数组中:
window.addEventListener("DOMContentLoaded", function(){
document.getElementById("btnLeaveMessage").addEventListener("click",
function(){
if (document.querySelector(".hfc-badge-title").innerHTML.indexOf("Leave us a message") > -1) {
document.getElementById("hfcEmbedContainer").style.display = "none";
}
});
});
我假设void read(int A[max], int& numbers) {
ifstream file("ints.txt");
if (file.is_open()) {
file >> numbers;
for (int i = 0; i < numbers; i++) {
// you're printing A[i] but you haven't stored
// anything there.
cout << "numbers: " << A[i] << endl;
是文件中的条目数,并且您打算以与阅读numbers
相同但读入A [i]的方式读取值。
numbers
代码的最后一部分也会尝试打印超出数组的最后一个条目:
cin >> A[i];
请记住,C ++数组基于0,因此cout << "numbers in array: " << A[numbers] << endl;
是* number + 1 *条目。