Ответ 1
Библиотека алгоритмов строковых С++ из Boost имеет почти все необходимые функции.
Прошу прощения за пылающий std::string и std:: wstring. Они довольно ограничены и далеки от того, чтобы быть потокобезопасными. Производительность мудрая, они не так уж хороши. Я пропускаю простые функции:
Я нашел Qt QString полезным и также нашел CBString http://bstring.sourceforge.net/bstrFAQ.shtml
Любые другие предложения и сравнения? Спасибо.
Библиотека алгоритмов строковых С++ из Boost имеет почти все необходимые функции.
Библиотека инструментов С++ String Toolkit (StrTk) - это бесплатная библиотека, которая состоит из надежных, оптимизированных и переносимых общих алгоритмов обработки строк и процедур для языка С++. Библиотека предназначена для простой в использовании и интеграции в существующем коде.
Библиотека имеет следующие возможности:
и многое другое...
Совместимые компиляторы С++:
Источник:
Я не уверен, что согласен. Строки действительно не должны быть потокобезопасными из-за накладных расходов, за исключением подсчета ссылок, если это применимо. Большинство других функций, которые вы хотите, превратили бы струны в мусорную баржу. Аналогично, удаление зависимостей удалит их способность хорошо работать с потоками.
Единственное, что я хотел бы предложить, это то, что мы могли бы получить неизменный класс строк, особенно тот, который не имеет владения или прекращения памяти. Я написал их раньше, и они могут быть очень полезными.
Bstring - Хотя я и не пробовал это самостоятельно, набор функций и скорость, представленные на их сайте. По вашему выбору лицензии GPL или BSD также является хорошей степенью свободы.
Кроме того, название предлагает лучше, так как они могут лгать?:)
Я нашел wxString удобным в использовании и имеет множество функций. Хотя это часть большой библиотеки (wxWidgets) и, возможно, слишком большая, когда вы просто хотите использовать строки. Он также работает без компонентов GUI, когда вы просто используете wxBase, который содержит wxString и несколько других компонентов.
EDIT: здесь ссылка в документацию. Он принимает стандартные функции std::string, а также некоторые другие. Я всегда считаю, что BeforeFirst() и AfterFirst() очень удобны, когда мне приходится разбирать текст. И это действительно хорошо документировано.
Для преобразования вы всегда можете сломать и использовать C-библиотеку cstdlib.
#include <cstlib>
#include <iostream>
int main()
{
std::string num;
std::cin >> num;
someFunc(atoi(num));
someOtherFunc(atof(num));
return 0;
}
atoi = ascii - целое число atof = ascii для плавания
Как и для поиска, используйте функцию STL " find", определенную в алгоритме заголовка, или find_first_of (или подобное). Я также считаю, что вы можете инициализировать вектор char с помощью std::string, но это гипотеза.
Я настоятельно рекомендую использовать ICU UnicodeString
, поскольку он поддерживает все общие функции манипуляции строками, а также поддерживает i18n.
Не знаю, что такое ОИТ? Вот выдержка из Wikipedia:
Международные компоненты для Unicode (ICU) - это проект с открытым исходным кодом зрелых библиотек C/С++ и Java для поддержки Unicode, интернационализации программного обеспечения и глобализации программного обеспечения. ICU широко переносится во многие операционные системы и среды. Он дает приложениям одинаковые результаты на всех платформах и между C, С++ и программным обеспечением Java. Проект ICU финансируется, поддерживается и используется IBM и многими другими компаниями.