fn() lexicalCastInterpret the character sequence in source as the numeric value and write to target.
Interpret the character sequence in source as the numeric value and write to target.
Defined in | <seqan/stream.h> |
---|---|
Signature |
bool lexicalCast(target, source);
TTarget lexicalCast<TTarge>(source) // throws BadLexicalCast
|
Parameters
target
|
A numeric value to write to. |
---|---|
source
|
The source sequence of char to convert. |
Template Parameters
TTarget |
The type to use for lexical cast of source. |
---|
Return Values
bool |
true if successful and false if there was a problem with the cast. |
---|
Detailed Description
Examples
The following example shows some lexical cast from various sequence types to numbers.
#include <iostream>
#include <string>
#include <seqan/sequence.h>
#include <seqan/stream.h>
using namespace seqan;
int main()
{
// interpret string literal as int
int x = 0;
// successful cast
std::cout << "success=" << lexicalCast(x, "123");
std::cout << ", x=" << x << "\n";
// unsuccessful cast
std::cout << "success=" << lexicalCast(x, "42a");
std::cout << ", x=" << x << "\n";
// interpret std::string as int
std::cout << "success=" << lexicalCast(x, std::string("234"));
std::cout << ", x=" << x << "\n";
// interpret CharString as int
std::cout << "success=" << lexicalCast(x, CharString("345"));
std::cout << ", x=" << x << "\n";
// interpret infix as int
CharString str = "123";
std::cout << "success=" << lexicalCast(x, infix(str, 1, 2));
std::cout << ", x=" << x << "\n";
// interpret literal as float and double
float f = -1;
double d = -1;
std::cout << "success=" << lexicalCast(f, "3.1");
std::cout << ", f=" << f << "\n";
std::cout << "success=" << lexicalCast(d, "4.2");
std::cout << ", d=" << d << "\n";
// demonstrate throwing of exceptions with lexicalCast()
try
{
x = lexicalCast<int>("a");
}
catch (BadLexicalCast const & badCast)
{
std::cout << "error: " << badCast.what() << "\n";
}
// demonstrate throwing of exceptions with lexicalCastWithException
try
{
lexicalCastWithException(x, "b");
}
catch (BadLexicalCast const & badCast)
{
std::cout << "error: " << badCast.what() << "\n";
}
return 0;
}
success=1, x=123 success=0, x=123 success=1, x=234 success=1, x=345 success=1, x=2 success=1, f=3.1 success=1, d=4.2 error: Unable to convert 'a' into int. error: Unable to convert 'b' into int.
Thrown Exceptions
BadLexicalCast |
The second variant throws BadLexicalCast in the case that casting failed. |
---|
Data Races
Thread safety unknown!