Reputation: 11
When I try to print the sorted data I can't get the program to enter the for loop. How do I fix this? This is the full code for those who wanted to see the rest of it. The for loop that isn't working is the for loop in the main function.
#include<string> //provieds strings
#include<iostream> //providescin and cout
#include<algorithm> //provides sort()
#include<vector> // provides vector
#include<fstream> // provides file input and output
using namespace std;
string temp_file_name;
const int NUMBER_OF_RANKS = 13;
const int NUMBER_OF_SUITS = 4;
string ranks[NUMBER_OF_RANKS] = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
string suits[NUMBER_OF_SUITS] = { "Hearts", "Diamonds", "Spades", "Clubs" };
void GenerateTestData()
{
ofstream output_file;
output_file.open(temp_file_name);
for (int suit_index = 0; suit_index < NUMBER_OF_SUITS; suit_index++)
{
for (int rank_index = 0; rank_index < NUMBER_OF_RANKS; rank_index++)
{
output_file << ranks[rank_index] << "of" << suits[suit_index] << endl;
}
}
output_file.close();
}
vector<string> ReadTestDataBackIn()
{
ifstream input_file;
vector<string> cards;
string buffer;
input_file.open(temp_file_name);
while (getline(input_file, buffer))
{
cards.push_back(buffer);
}
input_file.close();
return cards;
}
int main()
{
vector<string> cards;
GenerateTestData();
cards = ReadTestDataBackIn();
sort(cards.begin(), cards.end());
//This loop
for (int card_index = 0; card_index < cards.size(); card_index++)
{
cout << cards[card_index] << endl;
}
system("pause");
return 0;
}
Upvotes: 0
Views: 164
Reputation: 26
Your temp_file_name string is not defined and nothing gets writen to disk. This leaves the cards vector empty.
Upvotes: 1
Reputation: 108
Card_index is a signed integer, but cards.size gives you a size_type value, which is a unsigned integer.
If you are sure nothing wrong in for loop, this might be a problem.
Upvotes: 0
Reputation: 4980
Obviously "cards" is still size 0. Confirm this with cout << cards.size()
Upvotes: 1