A świstak wyżej siedzi i tylko psuje kod...
Po 1. string w pawnie to nic innego, jak tablica liczb, tylko te liczby odpowiadają konkretnym znakom w kodzie
ASCII, więc nie ma żadnej przeszkody, by POJEDYNCZY znak porównywać poprzez ==, nawet jest to zalecane, bo wydajniej się już nie da. A porównywanie pojedynczych znaków poprzez equal nie zadziała wcale... Bo się tak nie da i tyle.
Po 2. Jeśli string składa się tylko ze znaku null (czyli ^0) to jest po prostu pusty, więc 2 i 3 warunek w Twoim kodzie robią DOKŁADNIE to samo!
Po 3. po co 2 sprawdzenia, po co sprawdzasz 2 znak? Co Cię on obchodzi, jeśli 1 był nullem, więc string się tu skończył?
Wracam do kodu z postu autora tematu.
1 i 3 warunek sprawdzą DOKŁADNIE to samo. 2 i 4 również sprawdzą DOKŁADNIE to samo, bo '^0' to nic innego, jak 0...
if(!output[0] || output[0] == '^n' || output[0] == '^r' || output[0] == '^t' || output[0] == ' ') continue;
Kod zadziała w 100%, złapie zarówno spację, znak nowej linii (czyli de facto pustą linię), pustą linię bez znaku nowej linii (w zależności od tego, jak rozdzielasz tekst na linie, może ten znak tam być, a może go nie być) oraz złapie tabulator (jeśli nie chcesz go łapać, droga wolna by to zmienić).