我正在尝试将字符输入到文件中的二维数组中,但它没有将任何内容放入数组中。当我尝试将其打印出来时,我会得到一堆看起来像这样的符号 - ╠
以下是产生相同错误的示例:
测试文件如下所示:
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
答案 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();
}
如果你需要空格,只需要将列的两倍大。