我需要"解码"通过读取文件并将密码存储到数组中来自文件的消息。例如: A = Z
B = Y
C = X
D = W
E = V
F = U
G = T
H = S
I = R
J = Q
K = P
L = O
M = N
N = M
O = L
P = K
Q = J
R = I
S = H
T = G
U = F
V = E
W = D
X = C
Y = B
Z = A
2
SLD NZMB KILTIZNNVIH WLVH RG GZPV GL XSZMTV Z ORTSG YFOY? // 消息
MLMV,GSZG'H Z SZIWDZIV KILYOVN // 消息
我需要按照指示切换消息中的字母,我试图将字母存储到两个不同的数组中。当我使用getline()并跳过/跳过第一行时,我的问题出现了。因此,我的数组而不是从A到Z,它是B到Z.意味着它将第一行存储到我的变量Line中,但是当我想将它存储到我的数组中时,它将从第二行开始。有什么建议? PD:数字2是消息的数量,这意味着有两个消息需要解码。
#include <iostream>
#include <fstream>
using namespace std;
struct messages{
int messageNum;
string codeMessage;
string decodeMessase;
};
int main() {
ifstream readMessage;
string line;
int counting = 1;
string code_array[26];
string decode_array[26];
char data;
readMessage.open("input1.txt");
if (readMessage.fail()){
cerr << "File input unable to open"<< endl;
exit(1);
}
while (getline(readMessage,line) && counting < 26){
readMessage >> code_array[counting]>> data >>
decode_array[counting];
counting++;
}
cout.width(17);
cout << "Code array is: ";
for (int i = 0; i <26 ; ++i) {
cout <<code_array[i];
}
cout << endl;
cout << "Decode_array is: ";
for (int j = 0; j <26 ; ++j) {
cout << decode_array[j];
}
cout << endl;
readMessage.close();
return 0;
}
答案 0 :(得分:0)
如果没有更多信息,我建议您检查输入文件。我怀疑从UNIX系统到Windows的移动可能已经改变了\ n \ r \ endings,因此库缺少了第一行。要进行故障排除,我会TYPE不将输入复制到文件,然后重试。否则,您的代码乍一看似乎不是问题。