Monday, May 24, 2010

In Visual C++, I want to read a string from a text file, and assign it to a variable?

But for some reason I have programmer's block and am not quite sure of how to do it. I guess that's what happens when you've been looking at code for three days straight, all day long. I have attempted to do so by trying to force myself to think creatively, but my attempt is quite obviously flawed.





For instance, I have a variable called "fullscreen_x". I want this variable to be assigned information from a specific point on a specific line of a text file (like a user configuration file).





Basically, I just want to know how to read information from a text file. Thanks

In Visual C++, I want to read a string from a text file, and assign it to a variable?
Fred: A disgrace how you answer straight away with full code; you are encouraging laziness. Give hints and algorithms and let the asker implement them rather than showing up.





For the asker:


one of many variation to solve your problem would be:


1.) Read the file


2.) store the content into a data structure (vector, list ...etc.)


3.) Implement a search module which will iterate through that data structure


4.) Tokenize the search result and format it


5.) Assign that result to the variable
Reply:I do it somewhere in there.....I'm to lasy to pick it out....its part of fstream...that is how you open a file read from it into a string, then output to a file, this was compiled with GNU though...hope it still helps














big_int_calc.cpp





A program that will read in a large integer from a file then preform calculations on the number. It will then output the result into another file.








*/





#include%26lt;iostream%26gt;


#include%26lt;fstream%26gt;


#include"big_int.h"


#include"char_to_int.h"





int main(){


//ask the user for options and store as an integer


int option;


std:: cout %26lt;%26lt; '\n'%26lt;%26lt; "Enter an option: " %26lt;%26lt; '\n';


std::cout %26lt;%26lt; "1. Read a big intger from file and add" %26lt;%26lt; '\n';


std::cout %26lt;%26lt; "2. Enter big integer,and multiply by 10^n" %26lt;%26lt; '\n';


std::cout %26lt;%26lt; "3. Multiply an integer read from file" %26lt;%26lt; '\n';


std:: cin %26gt;%26gt; option;





//big int to store result in


big_int result;


//big int to store input data


big_int in_data1, in_data2;





if(option == 1){


//variable to store the file name


char file_name[20];





//ask the user for the name of the file they would like to read from


std:: cout %26lt;%26lt; "Enter the file name you would like to read a big integer from: ";


//input of the file name


std:: cin %26gt;%26gt; file_name;





//opens the file, if file is not opened error is output


std::ifstream in;


in.open(file_name);





// outputs error if needed


if(!in){


std::cout%26lt;%26lt; "Error cannot open file" %26lt;%26lt; '\n';


};





//read the data from the file into a C-array that is a member of the class big_int











int index = 0; // variable to try and make the array size itself


bool second_num = false; // variable to declare when to start second number input


int i = 0; //i is used as the index, but is also the size of the array for in_data1


while(!in.eof()){


char temp;


in.get(temp); // stores the value of the char read in into temp





if(temp != '\n' %26amp;%26amp; temp != '+'){ //filters new line char and +





if(temp == ';'){ // checks for the second number





second_num = true; //sets the value of second num to true once ; is read


// the size of the first big int will be i -1


i = 0; // resets the index


};


//reads first number


if(second_num == false){


in_data1.num_array[i] = char_to_int(temp); //stores value as integer in big_int data type


++i;


in_data1.set_array_size(i); // sets the size of the array


};





//reads in second number with filters


if(second_num == true %26amp;%26amp; temp != ';'){ //filters out ; that may be at the end of the file


in_data2.num_array[i] = char_to_int(temp); //stores the value as an integer in big_int


++i;


in_data2.set_array_size(i); // sets the value of the array size


};


};


};





// variable that decides if user wants to output to screen or file


int result_option;


if(option == 1){


//calculates result


result = in_data1 + in_data2;


//ask user for the input of the option


std::cout%26lt;%26lt; '\n' %26lt;%26lt; "To output result to screen enter 1, to output to file enter 2: ";


std:: cin %26gt;%26gt; result_option;


result = in_data1 + in_data2;


if(result_option == 1){


std::cout %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


result.output();


std::cout %26lt;%26lt; '\n';


};





};





// outputs to file if option is 2


if(result_option == 2){


//calculates result


result = in_data1 + in_data2;


//ask the user the name of file to write to


std::cout %26lt;%26lt; "Enter the file name to write to: " %26lt;%26lt; '\n';


char outfile_name[20];


//declares the file to be written to


std::cin %26gt;%26gt;outfile_name;


std::ofstream outfile(outfile_name, std::ios::app);





// format output


outfile %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


for(int i = 0; i %26lt; result.size(); ++i){


outfile %26lt;%26lt; result.num_array[i];


if( i % 50 == 0 %26amp;%26amp; i %26gt; 0){ //starts new line every 50 char


outfile %26lt;%26lt; '\n';


};





};


// output of ; at end of file


outfile %26lt;%26lt; ';';











};


};





// declares a big int entered int which is entered by the user


big_int entered_int;


if(option == 2){


//ask the user what they would like to do with the result


int output_option;


std::cout %26lt;%26lt; "To output to screen enter 1, to output to file enter 2: ";


std::cin %26gt;%26gt;output_option;


char temp;


char int_in[500];





//inputs the big integer to the big_int class array


int index = 0;


std::cout %26lt;%26lt; "Enter big integer with e to end input: " %26lt;%26lt; '\n';


//uses sential value to end input


while(std::cin%26gt;%26gt; temp){


if(temp == 'e'){


break;


};


//converts the char to integers


entered_int.num_array[index] = char_to_int(temp);


++index;


};


//inputs the value of n


entered_int.set_array_size(index);


std::cout %26lt;%26lt; "Enter n (10^n) n=";


int n;


std::cin%26gt;%26gt; n;


for(int i = 0; i %26lt; n; ++i){


//adds 0's on the end of the array


entered_int.num_array[entered_int.size()... = 0;


};


// sets new array size


entered_int.set_array_size(entered_int.s... + n);


if(output_option == 1){


std::cout %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


entered_int.output();


};





if(output_option == 2){


//writes to file if user chooses that optioin


std::cout %26lt;%26lt; "Enter the file name to write to: " %26lt;%26lt; '\n';


char outfile_name[20];


std::cin %26gt;%26gt;outfile_name;


std::ofstream outfile(outfile_name, std::ios::app);





//formats output with 50 char per line


outfile %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


for(int i = 0; i %26lt; entered_int.size(); ++i){


outfile %26lt;%26lt; entered_int.num_array[i];


if( i % 50 == 0 %26amp;%26amp; i %26gt; 0){


outfile %26lt;%26lt; '\n';


};





};


//adds ; at end of file


outfile %26lt;%26lt; ';';











};


};











// variable that decides if user wants to output to screen or file


int result_option;


if(option == 3){


//variable to store the file name


char file_name[20];





//ask the user for the name of the file they would like to read from


std:: cout %26lt;%26lt; "Enter the file name you would like to read a big integer from: ";


//input of the file name


std:: cin %26gt;%26gt; file_name;





//opens the file, if file is not opened error is output


std::ifstream in;


in.open(file_name);





// outputs error if needed


if(!in){


std::cout%26lt;%26lt; "Error cannot open file" %26lt;%26lt; '\n';


};





//read the data from the file into a C-array that is a member of the class big_int











int index = 0; // variable to try and make the array size itself


bool second_num = false; // variable to declare when to start second number input


int i = 0; //i is used as the index, but is also the size of the array for in_data1


while(!in.eof()){


char temp;


in.get(temp); // stores the value of the char read in into temp





if(temp != '\n' %26amp;%26amp; temp != '+'){ //filters new line char and +





if(temp == ';'){ // checks for the second number





second_num = true; //sets the value of second num to true once ; is read


// the size of the first big int will be i -1


i = 0; // resets the index


};


//reads first number


if(second_num == false){


in_data1.num_array[i] = char_to_int(temp); //stores value as integer in big_int data type


++i;


in_data1.set_array_size(i); // sets the size of the array


};





//reads in second number with filters


if(second_num == true %26amp;%26amp; temp != ';'){ //filters out ; that may be at the end of the file


in_data2.num_array[i] = char_to_int(temp); //stores the value as an integer in big_int


++i;


in_data2.set_array_size(i); // sets the value of the array size


};


};


};





//calculates result


result = in_data1 * in_data2;


//ask user for the input of the option


std::cout%26lt;%26lt; '\n' %26lt;%26lt; "To output result to screen enter 1, to output to file enter 2: ";


std:: cin %26gt;%26gt; result_option;


if(result_option == 1){


std::cout %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


result.output();


std::cout %26lt;%26lt; '\n';


};





};





// outputs to file if option is 2


if(result_option == 2){


//calculates result


result = in_data1 + in_data2;


//ask the user the name of file to write to


std::cout %26lt;%26lt; "Enter the file name to write to: " %26lt;%26lt; '\n';


char outfile_name[20];


//declares the file to be written to


std::cin %26gt;%26gt;outfile_name;


std::ofstream outfile(outfile_name, std::ios::app);





// format output


outfile %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


for(int i = 0; i %26lt; result.size(); ++i){


outfile %26lt;%26lt; result.num_array[i];


if( i % 50 == 0 %26amp;%26amp; i %26gt; 0){ //starts new line every 50 char


outfile %26lt;%26lt; '\n';


};





};


// output of ; at end of file


outfile %26lt;%26lt; ';';











};








/*


if(option == 4){


std::cout %26lt;%26lt; "Input a number to calculate the factorial of: ";


int fact_in;


std::cin %26gt;%26gt; fact_in;


big_int result;


result = fact(fact_in);


std::cout %26lt;%26lt; '\n' %26lt;%26lt; "Enter 1 to output to screen, enter 2 to output to file: " ;


int result_option;


std:: cin %26gt;%26gt; result_option;


if(result_option == 1){


result.output();





};


// outputs to file if option is 2


if(result_option == 2){





//ask the user the name of file to write to


std::cout %26lt;%26lt; "Enter the file name to write to: " %26lt;%26lt; '\n';


char outfile_name[20];


//declares the file to be written to


std::cin %26gt;%26gt;outfile_name;


std::ofstream outfile(outfile_name, std::ios::app);





// format output


outfile %26lt;%26lt; "The result is: " %26lt;%26lt; '\n';


for(int i = 0; i %26lt; result.size(); ++i){


outfile %26lt;%26lt; result.num_array[i];


if( i % 50 == 0 %26amp;%26amp; i %26gt; 0){ //starts new line every 50 char


outfile %26lt;%26lt; '\n';


};





};


// output of ; at end of file


outfile %26lt;%26lt; ';';








};


};


*/





return 0;


};


No comments:

Post a Comment