当我尝试打印已排序的数据时,我无法让程序进入for循环。我该如何解决?这是那些想要了解其余内容的人的完整代码。无效的for循环是main函数中的for循环。
#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;
}
答案 0 :(得分:1)
显然“牌”的大小仍为0。 用此确认 cout&lt;&lt; cards.size()
答案 1 :(得分:1)
您的temp_file_name字符串未定义,并且没有任何内容写入磁盘。这使卡片向量空。
答案 2 :(得分:0)
Card_index是有符号整数,但cards.size为您提供了size_type值,这是一个无符号整数。
如果你确定for循环没有错,这可能是个问题。