存储由空格分隔的字母矩阵

时间:2014-04-27 05:21:23

标签: c++ fstream

我试图创建一个可以自动解决单词搜索难题的程序。

我在存储输入的单词搜索拼图时遇到了一些麻烦。提供的示例单词搜索文本文件包含由两个空格分隔的字母。每个填充行之间有一个空行。

这是我现在的代码。它似乎只存储和输出拼图的最左侧列。我做错了什么?有没有更简洁的方法呢?

vector< vector <string> > puzzle;
ifstream myPuzzle ("puzzle.txt");
if (myPuzzle.is_open())
{
    while (myPuzzle)
    {
        string temp;
        if (!getline(myPuzzle, temp))
            break;

        istringstream ss(temp);
        vector <string> record;

        while (ss)
        {
            string temp2;
            if (!getline(ss, temp2, ' '))
                break;
            record.push_back(temp2);
        }

        puzzle.push_back(record);
    }
}
else
    cout << "Failed to open puzzle file!" << endl;

cout << "Puzzle succesfully inputted" << endl;

for (vector< vector<string> >::size_type i = 0; i < puzzle.size(); ++i)
{
    for (vector<string>::size_type it = 0; it < puzzle[i].size(); i++)
        cout << puzzle[i][it];
    cout << endl;
}

字符矩阵示例(puzzle.txt):

U  T  Y  Y  A  L  P  S  G  I  B  S  K  I  P  Q  H  S  K  T

A  T  L  T  I  R  U  N  E  Z  I  M  O  D  N  A  R  S  F  P

D  J  I  P  R  H  H  V  E  U  E  W  U  K  F  D  L  T  A  V

R  T  N  Q  N  O  E  Y  U  O  L  H  D  S  P  Q  C  A  F  H

A  A  E  U  O  O  S  A  J  F  B  O  I  Z  S  C  C  C  V  L

T  T  A  I  D  P  I  B  P  L  B  L  C  E  T  H  P  K  T  I

I  I  R  C  U  P  Q  S  A  W  U  B  T  Y  N  P  E  R  T  Y

C  S  T  K  U  M  S  C  R  O  B  I  I  K  N  I  L  L  H  R

D  E  N  B  N  A  K  I  R  U  O  N  O  H  L  I  Q  Y  L  A

F  L  A  M  I  Z  M  M  E  S  C  S  N  S  B  B  H  O  H  N

U  E  T  W  O  F  O  H  D  E  M  E  A  G  E  T  E  S  X  I

R  C  S  X  N  I  V  T  A  I  E  R  R  Z  Y  G  K  V  M  B

C  T  N  F  I  V  C  I  G  O  R  T  Y  X  E  H  X  G  W  D

D  I  O  T  W  D  Y  R  O  I  G  I  Z  L  V  L  P  V  Q  N

J  O  C  S  E  W  L  A  U  R  E  O  U  Q  W  O  S  A  T  I

I  N  O  I  U  M  F  G  B  D  L  N  C  C  Y  O  N  M  R  F

L  K  P  L  E  D  U  O  I  A  M  O  R  T  I  Z  E  J  B  G

M  S  Y  Y  U  R  V  L  Q  D  F  P  T  E  E  R  T  K  C  W

1 个答案:

答案 0 :(得分:2)

你在两个for循环中使用i ++。第二个应该使用++。