Оператор %
format
. Его можно использовать как один раз на строку, так и несколько раз в одной строке. Он аналогичен оператору <<
для строк. Что же касается оператора <<
, он также был переопределен так, что объекты format
можно непосредственно записать в выходной поток. Кроме того, если требуется поместить результаты в строку, используйте функцию-член str
.string s = f.str();
Если же вам нравится printf
printf
.f.parse("Это стоит $%d.*");
f % 50;
Если будет записано слишком много или слишком мало переменных для указанного формата, то при попытке записать строку в поток или извлечь отформатированную строку будет выброшено исключение format_error
thereof
).Класс format
Также для преобразования чисел из числовых типов в строки можно использовать sprintf
Глава 10.
3.3. Проверка, содержит ли строка допустимое число
Имеется строка string
Для проверки допустимости числа можно использовать шаблон функции lexical_cast
lexical_cast
.#include
#include
using namespace std;
using boost::lexical_cast;
using boost::bad_lexical_cast;
template
bool isValid(const string& num) {
bool res = true;
try {
T tmp = lexical_cast
} catch (bad_lexical_cast &e) {
res = false;
}
return(res);
}
void test(const string& s) {
if (isValid
cout << s << " - допустимое целое число." << endl;
else
cout << s << " - HE допустимое целое число." << endl;
if (isValid
cout << s << " - допустимое число двойной точности." << endl;
else
cout << s << " - HE допустимое число двойной точности." << endl;
if (isValid
cout << s << " - допустимое число одинарной точности." << endl;
else
cout << s << " - HE допустимое число одинарной точности " << endl;
}
int main() {
test("12345");
test("1.23456");
test("-1.23456");
test(" - 1.23456");
test("+1.23456");
test(" 1.23456 ");
test("asdf");
}
Вот вывод этого примера.
12345 - допустимое целое число.
12345 - допустимое число двойной точности.
12345 - допустимое число одинарной точности.
1.23456 - НЕ допустимое целое число.
1.23456 - допустимое число двойной точности.
1.23456 - допустимое число одинарной точности.
-1.23456 - НЕ допустимое целое число.
-1.23456 - допустимое число двойной точности.
-1.23456 - допустимое число одинарной точности.
- 1.23456 - НЕ допустимое целое число.
- 1 23466 - НЕ допустимое число двойной точности.
- 1.23456 - НЕ допустимое число одинарной точности.
+1.23456 - НЕ допустимое целое число.
+1.23456 - допустимое число двойной точности.
+1.23456 - допустимое число одинарной точности.
1.23456 - НЕ допустимое целое число.