Линия
if(ch!='endl'||';')
НЕ делать то, что вы думаете. Вы проверяете, что ch
не равно endl
, или что ;
есть. И так как ;
всегда истинно (не ноль), у вас на самом деле нет очень полезного сравнения здесь.
Вы могли бы думать о
if(ch!='endl'|| ch!=';')
Или что-то подобное. Не уверен, что вы пытаетесь достичь с помощью сравнения ...
Что касается другой части вопроса - вершина Google хита для «C++ прочитать файл построчно» получает Вас к следующему Stackoverflow ответа:
https://stackoverflow.com/a/7868998/1967396
Это все, что вам нужно.
Еще одна вещь - вам нужно более четко определить, что такое «строка кода». Является ли в принципе «любой возврат каретки или любая точка с запятой» новой линией? Как насчет точки с запятой, а затем новой строки? Как насчет линии с двумя точками с запятой (два оператора в одной строке)?
Для облегчения вашего мышления вам будет немного более загадочно. Я рекомендую разделить логику в
- Получить строку из файла
- Count запятая
- Если есть точка с запятой, есть что-нибудь еще отметить после них
- Решает, как считать этот
Заключительная мысль: единственная цитата ' '
используется для определения постоянной символа. Двойная кавычка " "
используется для определения строковой константы. Конец строки обычно равен \n
или \r
; в C++ мы используем std::endl
как способ написать это - но это не в кавычках. И когда вы используете namespace std
, предположительно, вы можете просто написать endl
, если вы имеете в виду '\n'
. Но размещение одинарных кавычек вокруг меня смущает меня - и, вероятно, компилятор тоже.
'while (std :: getline (string, file)) n_lines ++; '- btw, почему это помечено C? –
Является ли эта часть упражнения? Если нет, я бы предложил взглянуть на http://www.dwheeler.com/sloccount/ – Martin