gpt4 book ai didi

c++ - 从文件创建二维数组时遇到问题

转载 作者:行者123 更新时间:2023-11-30 00:59:13 26 4
gpt4 key购买 nike

我在解析矩阵文件时遇到了一些麻烦。它看起来像这样:

#  Matrix made by matblas from blosum62.iij 
# * column uses minimum score
# BLOSUM Clustered Scoring Matrix in 1/2 Bit Units
# Blocks Database = /data/blocks_5.0/blocks.dat
# Cluster Percentage: >= 62
# Entropy = 0.6979, Expected = -0.5209
A R N D C Q E G H I L K M F P S T W Y V B Z X *
A 4 -1 -2 -2 0 -1 -1 0 -2 -1 -1 -1 -1 -2 -1 1 0 -3 -2 0 -2 -1 0 -4
R -1 5 0 -2 -3 1 0 -2 0 -3 -2 2 -1 -3 -2 -1 -1 -3 -2 -3 -1 0 -1 -4
N -2 0 6 1 -3 0 0 0 1 -3 -3 0 -2 -3 -2 1 0 -4 -2 -3 3 0 -1 -4
D -2 -2 1 6 -3 0 2 -1 -1 -3 -4 -1 -3 -3 -1 0 -1 -4 -3 -3 4 1 -1 -4
C 0 -3 -3 -3 9 -3 -4 -3 -3 -1 -1 -3 -1 -2 -3 -1 -1 -2 -2 -1 -3 -3 -2 -4
Q -1 1 0 0 -3 5 2 -2 0 -3 -2 1 0 -3 -1 0 -1 -2 -1 -2 0 3 -1 -4
E -1 0 0 2 -4 2 5 -2 0 -3 -3 1 -2 -3 -1 0 -1 -3 -2 -2 1 4 -1 -4
G 0 -2 0 -1 -3 -2 -2 6 -2 -4 -4 -2 -3 -3 -2 0 -2 -2 -3 -3 -1 -2 -1 -4
H -2 0 1 -1 -3 0 0 -2 8 -3 -3 -1 -2 -1 -2 -1 -2 -2 2 -3 0 0 -1 -4
I -1 -3 -3 -3 -1 -3 -3 -4 -3 4 2 -3 1 0 -3 -2 -1 -3 -1 3 -3 -3 -1 -4
L -1 -2 -3 -4 -1 -2 -3 -4 -3 2 4 -2 2 0 -3 -2 -1 -2 -1 1 -4 -3 -1 -4
K -1 2 0 -1 -3 1 1 -2 -1 -3 -2 5 -1 -3 -1 0 -1 -3 -2 -2 0 1 -1 -4
M -1 -1 -2 -3 -1 0 -2 -3 -2 1 2 -1 5 0 -2 -1 -1 -1 -1 1 -3 -1 -1 -4
F -2 -3 -3 -3 -2 -3 -3 -3 -1 0 0 -3 0 6 -4 -2 -2 1 3 -1 -3 -3 -1 -4
P -1 -2 -2 -1 -3 -1 -1 -2 -2 -3 -3 -1 -2 -4 7 -1 -1 -4 -3 -2 -2 -1 -2 -4
S 1 -1 1 0 -1 0 0 0 -1 -2 -2 0 -1 -2 -1 4 1 -3 -2 -2 0 0 0 -4
T 0 -1 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -2 -1 1 5 -2 -2 0 -1 -1 0 -4
W -3 -3 -4 -4 -2 -2 -3 -2 -2 -3 -2 -3 -1 1 -4 -3 -2 11 2 -3 -4 -3 -2 -4
Y -2 -2 -2 -3 -2 -1 -2 -3 2 -1 -1 -2 -1 3 -3 -2 -2 2 7 -1 -3 -2 -1 -4
V 0 -3 -3 -3 -1 -2 -2 -3 -3 3 1 -2 1 -1 -2 -2 0 -3 -1 4 -3 -2 -1 -4
B -2 -1 3 4 -3 0 1 -1 0 -3 -4 0 -3 -3 -2 0 -1 -4 -3 -3 4 1 -1 -4
Z -1 0 0 1 -3 3 4 -2 0 -3 -3 1 -1 -3 -1 0 -1 -3 -2 -2 1 4 -1 -4
X 0 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 0 0 -2 -1 -1 -1 -1 -1 -4
* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1

它是更大程序的一部分,但首先我想在将它放入一个类之前单独检查它。所以我的代码看起来像这样:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

char readfile(char * file)
{
int lines, cols;
char matrix[30][30];
ifstream ifs(file, ios::in);
ifs.precision(2);
ifs.setf(ios::fixed, ios::showpoint);
ifs >> matrix[lines][cols];
while(!ifs.eof())
{
string linijka;
getline(ifs, linijka);
if (linijka[0] != '#')
{
for (lines = 0; lines < 30; lines++)
{
for (cols = 0; cols < 30; cols++)
{
return matrix[lines][cols];
}
}
}
}

ifs.close();
}

int main(int argc, char * argv[1])
{
cout << "Matrix:\n" << readfile(argv[1]) << endl;
return 0;
}

一切都编译无误。不幸的是矩阵是空的。执行后我收到这样的东西:

mateusz@viking:$ ./matpars submat/BLOSUM62.txt 
Matrix:

我需要它来从单元格 e 获取标记。 G。 [T][G].

有什么想法吗?我会非常感激。 ;-)

最佳答案

您的代码中存在一个基本问题:一旦它到达该 return 语句,该函数就会结束,并且您的文件的其余部分将不会被解析。

这就是您什么都看不到的原因;它仅打印出文件第一行中的第一个字符,而这恰好是第一个 A 列标记之前的空格。

编辑:实际上,仔细观察,似乎存在更重要的问题。您似乎期望第一个 ifs >> matrix 行为您将整个文件加载到数组中,但它做不到。

您似乎是一名初级程序员。老实说,我建议您从一种比 C++ 更简单的语言开始,例如 Python 或 Ruby。

关于c++ - 从文件创建二维数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com