if(strlen(str) + (strlen(ss.str) < sz)
должно быть
if(strlen(str) + strlen(ss.str) < sz)
Обратите внимание, что у вас есть 4 (
, но только 3 )
в исходной строке.Они должны совпадать, но это не так.Поскольку (
перед вторым strlen()
является излишним (нет необходимости заключать strlen(ss.str)
в скобки), вы можете удалить его.
Исходный код с изменениями #include
s и фиксированный код .Обратите внимание, что мне пришлось изменить #include
с string.h
на cstring
для идеона.В любом случае, это предпочтительный выбор.Мне также пришлось добавить using namespace std;
, поскольку ваш код явно не использовал пространство имен std
, где это необходимо, например, cout
.Вы также должны позаботиться об этих предупреждениях .
Причина, по которой ошибка компилятора указывает на 4 строки, заключается в том, что это строка, где она понимает: «О, нет, здесь проблеманикогда не смогу разобрать этот код! "GCC довольно дурацкий в сообщениях об ошибках, но компилятор (например, clang), который лучше справляется с этой задачей, возвратился бы к соответствующей строке, где на самом деле лежит основная причина ошибки, и может даже предложить решение для вас.