2016-12-16 2 views
0

Я пытаюсь написать программу, которая будет эхо вводить символы на экране с помощью get() и put(), пока пользователь не нажмет '\ n' '\ n', но он ломается только с одним «\ n». Спасибо за вашу помощь.C++ ' n', чтобы разбить цикл while

#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <cstdlib> 
using namespace std; 

int main() 
{ 
    char ch1, ch2; 
    do 
    {  
     cin.get(ch1); 
     cout.put(ch1); 
     cin.get(ch2); 
     cout.put(ch2); 
    } while ((ch1 != '\n') && (ch2 != '\n')); 
} 
+0

Это должно быть '||', а не '&&'. – Barmar

+1

Не хотите ((ch1 == '\ n') && (ch2 == '\ n')) ?? – Eric

+0

Большое спасибо и Surt для разработки. –

ответ

1

Вы обернули свою логику.

} while ((ch1 != '\n') && (ch2 != '\n')); 

ваш здесь говорит, которые я не имею «\ п» и и не иметь «\ п», но у вас есть «\ п», так что первая часть является ложной, а затем вторым пунктом не имеет значения, так как оценка короткого замыкания на C++ || & & выражения.

ie.

false && something 

всегда неверный.

2

Вы должны использовать || вместо &&

int main() 
{ 
char ch1, ch2; 
do 
{  
cin.get(ch1); 
cout.put(ch1); 
cin.get(ch2); 
cout.put(ch2); 
} while ((ch1 != '\n') || (ch2 != '\n')); 
} 
0

Попробуйте использовать | | вместо & &.