«Getline» из файла не читает первую строку строки - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть файл со строкой «abc defg hij klmno», когда я пытаюсь прочитать и изменить его, в результате получается «defg hij klmno», так как первая строка отсутствует. есть идеи?

int main(int argc, char **argv)
{
   ifstream myfile("C:\\sth.txt");
   string Ciphertext;
while (myfile>>Ciphertext)
{
    getline(myfile, Ciphertext);    
}


//some other code...

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Рассмотрим этот код:

while (myfile>>Ciphertext)
{
    getline(myfile, Ciphertext);    
}

Выражение в while пытается прочитать первую строку с пробелом из файла в Ciphertext. Он успешно читает abc, поэтому он входит в цикл, где он читает строку (до следующей новой строки) в Cipertext, заменяя все, что там есть. Таким образом, он читает остальную часть первой строки defg hij klmno. Затем он возвращается и пытается прочитать еще одну строку, разделенную пробелами, но это не удается, поскольку теперь вы находитесь в конце файла. Таким образом, цикл while заканчивается, оставляя defg hij klmno in Ciphertext

0 голосов
/ 27 апреля 2018

Вы читаете первую запись в Ciphertext, затем немедленно отбрасываете ее и читаете «остальные», если строка.

while(myfile>>Ciphertext)
{
    getline(myfile, Ciphertext);
}

Попробуйте вместо этого:

while(getline(myfile, Ciphertext))
{
    // logic for each line here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...