C ++程序不会进入循环

时间:2015-10-28 02:27:55

标签: c++

当我尝试打印已排序的数据时,我无法让程序进入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;
}

3 个答案:

答案 0 :(得分:1)

显然“牌”的大小仍为0。 用此确认     cout&lt;&lt; cards.size()

答案 1 :(得分:1)

您的temp_file_name字符串未定义,并且没有任何内容写入磁盘。这使卡片向量空。

答案 2 :(得分:0)

Card_index是有符号整数,但cards.size为您提供了size_type值,这是一个无符号整数。

如果你确定for循环没有错,这可能是个问题。