Okay, so at the moment I am having a hard time trying to read integers from a file. ( I am using C++)
int main(void)
{
int size = 0;
string name;
string line;
while(getline(cin,line)) //get the line from input//
{
size++;
}
cout << size;
}
This is the code at the moment and the input from a file is
2 3 17 1 9 23 8 4 22 15 10
8 7 14
I use visual studio 2010 and have set up the debugger to take input in from a file and output to another file.
Output is just 2 because it is counting lines only.
In any case, what I am trying to do is count all the numbers in this file and then create an array of "size" counted and then input each number into the array. Now the reason i want it this way is because I want to be able to take in any number of integers. Can someone please help me here?
I want this to work without using vectors.
Edit: here is the c++ your looking for
my c++ skills are a little rusty so please forgive, however this should work
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
#define MAX_LINES 25
#define MAX_IN_LINE 50
int main() {
//open our file
ifstream myfile ("test.txt");
//initialize our array's
int myarray[MAX_LINES][MAX_IN_LINE];
//used for knowing how many numbers are stored in each array
int totalargs[MAX_LINES];
//rest of variables
string line,tempnum;
int end=0;
int firstarg=0,secondarg=0;
int num;
//set all of our arrays to be zero'd out
memset(myarray,0,MAX_LINES*MAX_IN_LINE);
memset(totalargs,0,MAX_LINES);
//make sure file is opened
if (myfile.is_open()) {
//get a line
getline(myfile,line);
//the first line is the number, so set it to num
num=atoi(line.c_str());
while(!myfile.eof()) {
getline(myfile,line);
//if there is a , in the line we have gotten
while((end=line.find(' ',0))!=string::npos) {
//get the number before the ,
tempnum=line.substr(0,end);
myarray[firstarg][secondarg]=atoi(tempnum.c_str());
secondarg++;
//erase the part of the line we have gotten
line.erase(0,end+1);
}
//we will have an extra number at the end after that loop
//this gets that last number
tempnum=line.substr(0,line.length());
myarray[firstarg][secondarg]=atoi(tempnum.c_str());
//set the number of args to our array
totalargs[firstarg]=secondarg;
firstarg++;
//reset arg.
secondarg=0;
}
} else {
cout << "cannot open";
}
//this is extra, but it just shows you your variables and that
//they really do have numbers in them.
cout << "num: " << num << endl;
for (int x=0;x<firstarg;x++) {
cout << "Array " << x+1 << ": " << myarray[x][0];
for (int y=1;y<=totalargs[x];y++) {
cout << "," << myarray[x][y];
}
cout << endl;
}
}
another much more simpler solution is
vector<int> numbers;
ifstream fin("infile.txt");
int x;
while( fin >> x ) {
numbers.push_back(x);
}
std::ifstream in("myFile.txt");
int i, size=0;
while(in>>i) // counting int at the input
{
size++;
}
in.seekg (0, in.beg);
int arr=new int[size];
for(size_t i=0;i<size;++i)
in>>arr[i];
...
delete[]arr;
Why not with vector?
std::ifstream in("myFile.txt");
int i;
std::vector<int> v;
while(in>>i) // counting int at the input
{
v.push_back(i);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.