从文件中读取特定字符

时间:2018-03-12 18:46:01

标签: c++11 fstream

我需要"解码"通过读取文件并将密码存储到数组中来自文件的消息。例如: 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;
}

1 个答案:

答案 0 :(得分:0)

如果没有更多信息,我建议您检查输入文件。我怀疑从UNIX系统到Windows的移动可能已经改变了\ n \ r \ endings,因此库缺少了第一行。要进行故障排除,我会TYPE不将输入复制到文件,然后重试。否则,您的代码乍一看似乎不是问题。