EmachinesDIMA, строка в C++ это std::string а не char*
у std::string есть точно определенное назначение и поведение.
использовать со стандартными контейнерами c-style function это абсолютно неправильное и вредное занятие.
мне надо в цикле на каждой итерации запрашивать ввод строки.
cin » s1
позволяет это сделать, а
scanf("%255[^\n]", s1)
только 1 раз.
А вот такой scanf -- позволяет это сделать сколько угодно раз: scanf("%255[^\n]\n", s1);
А вот такой позволяет ввести строку заранее неизвестной длины:
1. Для ввода строки использовать std::getline.
2. Ну, в Си++ есть хорошо инкапсулированные строки, а в Си нет. Потому в Си очень сложно получить из потока строку неизвестной длины.
язык разметки в scanf необычный но позволяет очень быстро парсить строки (например простые csv без экранированных ковычек и разделителей в строках, содержащих например числа).