为什么我的程序不能从文件中将字符输入到2d数组中?

时间:2016-10-28 02:16:13

标签: c++ arrays file

我正在尝试将字符输入到文件中的二维数组中,但它没有将任何内容放入数组中。当我尝试将其打印出来时,我会得到一堆看起来像这样的符号 - ╠

以下是产生相同错误的示例:

测试文件如下所示:

TimerTest.csv

产生相同错误的示例:

g g g g g g g g g g
g g g t t t t t t g
g g g t t g t t g g
g t t g g t g g t g
g t t g g t g g t g
g t g t t g t t g g
g t t g g t g g t g
g t t g g t g g t g
g t g t t g t t g g
g g g g g g g g g g

3 个答案:

答案 0 :(得分:1)

你的列要小两倍,因为它们不考虑白色字符。您可以按如下方式编写第一个循环,例如,ising isalpha以检查当前字符是否为字母数字:

char tmp;
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < columns*2; j++) {
        tmp = inFile.get();
        if (isalpha(tmp))
        {
            myArray[i][j/2] = tmp;
        }
    }
}

答案 1 :(得分:1)

inFile.get(myArray[i][j])将读取所有字符,包括空格。请改用>>流运算符,这将跳过空格:

if (!inFile)
    return 0;

//initialize the array
memset(myArray, 0, 15 * 15);

for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < columns; j++)
    {
        if (!(inFile >> myArray[i][j]))
        {
            //break the loop
            i = rows;
            break;
        }
    }
}

答案 2 :(得分:1)

试试这个:

int main() {

    ifstream inFile;
    char myArray[15][15];

    inFile.open("C:\\test\\Ch5p_fa.asc", std::fstream::in);   // std::fstream::in allows you to read from the file.

    int rows = 10;
    int columns = 10;

    for (int i = 0; i < rows; i++)  {
        for (int j = 0; j < columns; j++) {
            inFile.get(myArray[i][j]);
            inFile.get();                       // Skeem unwonted char
        }
    }

    inFile.close();

    cin.get();

}

如果你需要空格,只需要将列的两倍大。