{"action":"created","issue":{"url":"https://api.github.com/repos/vetronog/OOP/issues/1","repository_url":"https://api.github.com/repos/vetronog/OOP","labels_url":"https://api.github.com/repos/vetronog/OOP/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/vetronog/OOP/issues/1/comments","events_url":"https://api.github.com/repos/vetronog/OOP/issues/1/events","html_url":"https://github.com/vetronog/OOP/issues/1","id":178153995,"number":1,"title":"Замечания по replace","user":{"login":"oMystique","id":14878773,"avatar_url":"https://avatars.githubusercontent.com/u/14878773?v=3","gravatar_id":"","url":"https://api.github.com/users/oMystique","html_url":"https://github.com/oMystique","followers_url":"https://api.github.com/users/oMystique/followers","following_url":"https://api.github.com/users/oMystique/following{/other_user}","gists_url":"https://api.github.com/users/oMystique/gists{/gist_id}","starred_url":"https://api.github.com/users/oMystique/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oMystique/subscriptions","organizations_url":"https://api.github.com/users/oMystique/orgs","repos_url":"https://api.github.com/users/oMystique/repos","events_url":"https://api.github.com/users/oMystique/events{/privacy}","received_events_url":"https://api.github.com/users/oMystique/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-09-20T19:25:11Z","updated_at":"2016-09-20T19:40:59Z","closed_at":null,"body":"* Следует добавить в `.gitignore` продукты сборки C++ проектов. Правильный `.gitignore` можно найти в репозитории у Алексея Малова.\r\n* Следует более внимательно подбирать сокращения для имен переменных. В данном случае curr == ток? Наврятли именно это имелось в виду. :)\r\n```c++\r\n\tunsigned int currPosition = 0;\r\n``` \r\nТак же, следует объявлять переменные как можно ближе к месту использования. \r\nДа, и для хранения позиции индекса строки лучше использовать `size_t`.\r\n* Для переменной `textPosition` лучше подобрать другое название, из которого было бы понятно позицию чего конкретно сохраняют в эту переменную.\r\n* Лучше выделить поиск и замену строки в отдельную функцию. \r\n```c++\r\n\tsize_t textPosition = 0;\r\n\tstd::string line;\r\n\twhile (std::getline(fileOfInput, line))\r\n\t{\r\n\t\tcurrPosition = 0;\r\n\t\ttextPosition = line.find(argv[3], currPosition);\r\n\t\twhile (textPosition != string::npos) \r\n\t\t{\r\n\t\t\tline.replace(textPosition, std::string(argv[3]).length(), argv[4]);\r\n\t\t\tcurrPosition = textPosition + std::string(argv[4]).length();\r\n\t\t\ttextPosition = line.find(argv[3], currPosition);\r\n\t\t}\r\n\t\toutput << line << \"\\n\";\r\n\t}\r\n```\r\n* В данном случае `std::string(argv[3]).length()` вполне можно использовать `strlen(argv[3])`. Но, скорее всего, надобности в этом не будет после выделения функции.\r\n\r\n**Тесты**\r\n* `rem Проверим несколько строк\r\n%PROGRAM% somelines.txt %TEMP%\\somelines.txt dog cat\r\nif ERRORLEVEL 1 goto err\r\nfc.exe %TEMP%\\somelines.txt somelines.txt\r\nif ERRORLEVEL 0 goto err\r\n`\r\nСледует сравнивать полученный результат с ожидаемым результатом, а не входным файлом.\r\n\r\n* `set PROGRAM=\"OOP lab1 replace.exe\"` \r\nНе стоит в автоматических тестах явно присваивать переменной `PROGRAM` путь к exe-шнику. \r\nЛучше этот путь передать с первым параметром командной строки.\r\n`SET program=\"%1\"`\r\nВ репозитории Алексея Малова располагается пример с автоматическими bat-текстами для одного из заданий 1 лабораторной работы.  - https://github.com/alexey-malov/oop/tree/master/labs/lab1/CopyFile\r\nТак же, нужно ознакомиться с пояснениями, доступными по ссылке - https://github.com/alexey-malov/oop/wiki/%D0%9F%D0%BE%D1%8F%D1%81%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BF%D0%BE-1-%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%BE%D0%B9-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B5\r\n\r\nНа будущее - проектам не стоит давать имена, содержащие пробельные символы.\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/vetronog/OOP/issues/comments/248410803","html_url":"https://github.com/vetronog/OOP/issues/1#issuecomment-248410803","issue_url":"https://api.github.com/repos/vetronog/OOP/issues/1","id":248410803,"user":{"login":"oMystique","id":14878773,"avatar_url":"https://avatars.githubusercontent.com/u/14878773?v=3","gravatar_id":"","url":"https://api.github.com/users/oMystique","html_url":"https://github.com/oMystique","followers_url":"https://api.github.com/users/oMystique/followers","following_url":"https://api.github.com/users/oMystique/following{/other_user}","gists_url":"https://api.github.com/users/oMystique/gists{/gist_id}","starred_url":"https://api.github.com/users/oMystique/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oMystique/subscriptions","organizations_url":"https://api.github.com/users/oMystique/orgs","repos_url":"https://api.github.com/users/oMystique/repos","events_url":"https://api.github.com/users/oMystique/events{/privacy}","received_events_url":"https://api.github.com/users/oMystique/received_events","type":"User","site_admin":false},"created_at":"2016-09-20T19:40:59Z","updated_at":"2016-09-20T19:40:59Z","body":"```bash\r\nrem Проверим пустой файл\r\n%PROGRAM% emptystring.txt %TEMP%\\empty.txt \"some string\" \"some another string\"\r\nif %ERRORLEVEL% NEQ 1 goto err\r\n```\r\nЭтот тест упадёт сразу же."}}
{"actor":{"display_login":"oMystique"}}