LINUX.ORG.RU

История изменений

Исправление bonta, (текущая версия) :

но кстати говоря, да, есть и операторы сравнения между std::string и const char *, и наверное не стоит думать что внутри себя они си строку преобразуют к std а и сравнивают, скорее берут от std с_str()

это да но, там у методов такой дизайн что статик строки я не беру напрямую из класса - а из входящих параметров метода беру их - а там уже конструирование будет если си строку в ссылку на std передать

Ну. т.е. я как бы делал такой дизайн методов чтобы он максимально прозрачный был. Т.е .статики они вроде как и как глобальные переменные в данном случае, но при этом прозрачно попадают в методы и не создают какой-то скрытой связанности с собой. В итоге это еще одна причина по котрой мне не совсем подходит const char *, ну и плюс strlen не хочу, а иногда нужен размер.

А так да, если бы я не передавал в методы их в параметрах, а обращался к области видимости класса - то можно было вполне себе - т.к. операторы конкатинации и сравнения есть между std и cи строками.

Энивей, проблема решена - в моём случае можно, т.к. строки исключительно в рамках единицы трансляции будут. Но при этом да, работа с ними в методах - только через ссылки (входящие параметры) на них а не на прямую - хороший имхо подход, т.к. например если бы я решил отказаться от хранения этих строчек внутри класса, а брать их из какого-нить внешнег объекта-ресурса - код класса не пришлось бы менят - профит :)

Исходная версия bonta, :

но кстати говоря, да, есть и операторы сравнения между std::string и const char *, и наверное не стоит думать что внутри себя они си строку преобразуют к std а и сравнивают, скорее берут от std с_str()

это да но, там у методов такой дизайн что статик строки я не беру напрямую из класса - а из входящих параметров метода беру их - а там уже конструирование.

Ну. т.е. я как бы делал такой дизайн методов чтобы он максимально прозрачный был. Т.е .статики они вроде как и как глобальные переменные в данном случае, но при этом прозрачно попадают в методы и не создают какой-то скрытой связанности с собой. В итоге это еще одна причина по котрой мне не совсем подходит const char *, ну и плюс strlen не хочу, а иногда нужен размер.

А так да, если бы я не передавал в методы их в параметрах, а обращался к области видимости класса - то можно было вполне себе - т.к. операторы конкатинации и сравнения есть между std и cи строками.

Энивей, проблема решена - в моём случае можно, т.к. строки исключительно в рамках единицы трансляции будут. Но при этом да, работа с ними в методах - только через ссылки (входящие параметры) на них а не на прямую - хороший имхо подход, т.к. например если бы я решил отказаться от хранения этих строчек внутри класса, а брать их из какого-нить внешнег объекта-ресурса - код класса не пришлось бы менят - профит :)