diff --git a/aconvert2/src/DotConverter.cpp b/aconvert2/src/DotConverter.cpp index 8a93361ee7044aa353d9bfe6f6c1a6543aab21c7..22c3fed9012f6e967f18e04cd919265ee48eb23f 100644 --- a/aconvert2/src/DotConverter.cpp +++ b/aconvert2/src/DotConverter.cpp @@ -888,7 +888,7 @@ void DotConverter::transitions(const automaton::NFTA& fta, const std::map<label: //put transitions from automaton to "transitions" for (const auto& transition : fta.getTransitions()) { std::string symbol = alib::StringDataFactory::toString(transition.first.first.getSymbol()); - symbol += std::utos(transition.first.first.getRank().getData()); + symbol += std::to_string(transition.first.first.getRank().getData()); for(const label::Label& to : transition.second) { std::pair<int, std::vector<int>> key(states.find(to)->second, {}); @@ -939,7 +939,7 @@ void DotConverter::transitions(const automaton::DFTA& fta, const std::map<label: //put transitions from automaton to "transitions" for (const auto& transition : fta.getTransitions()) { std::string symbol = alib::StringDataFactory::toString(transition.first.first.getSymbol()); - symbol += std::utos(transition.first.first.getRank().getData()); + symbol += std::to_string(transition.first.first.getRank().getData()); std::pair<int, std::vector<int>> key(states.find(transition.second)->second, {}); for(const label::Label& state : transition.first.second) { diff --git a/aconvert2/src/TikZConverter.cpp b/aconvert2/src/TikZConverter.cpp index f31c3a1bd0647837758c8288506a0bf34c5d991d..d2763873c366001d93654d0088714ad053597b5e 100644 --- a/aconvert2/src/TikZConverter.cpp +++ b/aconvert2/src/TikZConverter.cpp @@ -857,7 +857,7 @@ void TikZConverter::transitions ( const automaton::NFTA & fta, const std::map < // put transitions from automaton to "transitions" for ( const auto & transition : fta.getTransitions ( ) ) { std::string symbol = alib::StringDataFactory::toString ( transition.first.first.getSymbol ( ) ); - symbol += std::utos ( transition.first.first.getRank ( ).getData ( ) ); + symbol += std::to_string ( transition.first.first.getRank ( ).getData ( ) ); for ( const label::Label & to : transition.second ) { std::pair < int, std::vector < int > > key ( states.find ( to )->second, { } ); @@ -922,7 +922,7 @@ void TikZConverter::transitions ( const automaton::DFTA & fta, const std::map < // put transitions from automaton to "transitions" for ( const auto & transition : fta.getTransitions ( ) ) { std::string symbol = alib::StringDataFactory::toString ( transition.first.first.getSymbol ( ) ); - symbol += std::utos ( transition.first.first.getRank ( ).getData ( ) ); + symbol += std::to_string ( transition.first.first.getRank ( ).getData ( ) ); std::pair < int, std::vector < int > > key ( states.find ( transition.second )->second, { } ); diff --git a/alib2common/src/XmlApi.hpp b/alib2common/src/XmlApi.hpp index 83f5950a85841da1880ff71c6453b5e7695efced..28a866c00410f19387d7e61a3848daf39f866e3e 100644 --- a/alib2common/src/XmlApi.hpp +++ b/alib2common/src/XmlApi.hpp @@ -130,7 +130,7 @@ public: if ( tagName == Group::getXmlTagRefName() ) { sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, Group::getXmlTagRefName() ); sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ATTRIBUTE, "id" ); - int id = std::stoi ( sax::FromXMLParserHelper::popTokenData ( input, sax::Token::TokenType::CHARACTER ) ); + int id = std::from_string < int > ( sax::FromXMLParserHelper::popTokenData ( input, sax::Token::TokenType::CHARACTER ) ); sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ATTRIBUTE, "id" ); sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, Group::getXmlTagRefName() ); std::map < int, void * >::iterator elem = input.idToInstance ( Group::getXmlTagRefName() ).find ( id ); @@ -172,7 +172,7 @@ public: } else { output.emplace_back ( Group::getXmlTagRefName(), sax::Token::TokenType::START_ELEMENT ); output.emplace_back ( "id", sax::Token::TokenType::START_ATTRIBUTE ); - output.emplace_back ( std::itos ( elem->second ), sax::Token::TokenType::CHARACTER ); + output.emplace_back ( std::to_string ( elem->second ), sax::Token::TokenType::CHARACTER ); output.emplace_back ( "id", sax::Token::TokenType::END_ATTRIBUTE ); output.emplace_back ( Group::getXmlTagRefName(), sax::Token::TokenType::END_ELEMENT ); } diff --git a/alib2data/src/graph/common/GraphFromXMLParser.cpp b/alib2data/src/graph/common/GraphFromXMLParser.cpp index eb0ffe999e5b02731004213783399cc204290b14..83e5b38a7a9b8d6d217e312ab9b9c6b14c32f5c6 100644 --- a/alib2data/src/graph/common/GraphFromXMLParser.cpp +++ b/alib2data/src/graph/common/GraphFromXMLParser.cpp @@ -69,7 +69,7 @@ UndirectedEdge GraphFromXMLParser::parseUndirectedEdge(std::deque<sax::Token>::i int GraphFromXMLParser::parseValue(std::deque<sax::Token>::iterator& input) { sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "value"); - int value = std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); + int value = std::from_string < int > (sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "value"); return value; diff --git a/alib2data/src/graph/common/GraphToXMLComposer.h b/alib2data/src/graph/common/GraphToXMLComposer.h index 1de2a37aabd72c302b2ea291b7e916329735ada2..c55bc1d643b8c7f4cd3ab28f89fbab7535ab4d61 100644 --- a/alib2data/src/graph/common/GraphToXMLComposer.h +++ b/alib2data/src/graph/common/GraphToXMLComposer.h @@ -51,7 +51,7 @@ void GraphToXMLComposer::composeNodeValues(std::deque<sax::Token> &out, const T for (auto i : graph.nodeValues) { composeNode(out, i.first); out.emplace_back("value", sax::Token::TokenType::START_ELEMENT); - out.emplace_back(std::itos(i.second), sax::Token::TokenType::CHARACTER); + out.emplace_back(std::to_string(i.second), sax::Token::TokenType::CHARACTER); out.emplace_back("value", sax::Token::TokenType::END_ELEMENT); } out.emplace_back("nodevalues", sax::Token::TokenType::END_ELEMENT); @@ -63,7 +63,7 @@ void GraphToXMLComposer::composeEdgeValues(std::deque<sax::Token> &out, const T for (auto &i : graph.edgeValues) { composeEdge(out, i.first); out.emplace_back("value", sax::Token::TokenType::START_ELEMENT); - out.emplace_back(std::itos(i.second), sax::Token::TokenType::CHARACTER); + out.emplace_back(std::to_string(i.second), sax::Token::TokenType::CHARACTER); out.emplace_back("value", sax::Token::TokenType::END_ELEMENT); } out.emplace_back("edgevalues", sax::Token::TokenType::END_ELEMENT); diff --git a/alib2data/src/label/HexavigesimalLabel.cpp b/alib2data/src/label/HexavigesimalLabel.cpp index ce6e0c7626c5a2d4e0755912d7d097f3431de262..bddec7ee686e93ff2c1e76a14d1f7a0f198a610e 100644 --- a/alib2data/src/label/HexavigesimalLabel.cpp +++ b/alib2data/src/label/HexavigesimalLabel.cpp @@ -47,14 +47,14 @@ HexavigesimalLabel::operator std::string() const { HexavigesimalLabel HexavigesimalLabel::parse(std::deque<sax::Token>::iterator& input) { sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, HexavigesimalLabel::getXmlTagName()); - HexavigesimalLabel data(std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER))); + HexavigesimalLabel data(std::from_string < int > (sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER))); sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, HexavigesimalLabel::getXmlTagName()); return data; } void HexavigesimalLabel::compose(std::deque<sax::Token>& out) const { out.emplace_back(HexavigesimalLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); - out.emplace_back(std::itos(hexavigesimal), sax::Token::TokenType::CHARACTER); + out.emplace_back(std::to_string(hexavigesimal), sax::Token::TokenType::CHARACTER); out.emplace_back(HexavigesimalLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2data/src/primitive/Integer.cpp b/alib2data/src/primitive/Integer.cpp index 323d30d8b38d5d888187296056b2eb116d9a6799..6a8975c07f3a2a2de5f3ac79f1401ce78953c831 100644 --- a/alib2data/src/primitive/Integer.cpp +++ b/alib2data/src/primitive/Integer.cpp @@ -50,7 +50,7 @@ Integer Integer::parse(std::deque<sax::Token>::iterator& input) { int Integer::parseRaw(std::deque<sax::Token>::iterator& input) { sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Integer::getXmlTagName()); - int data = std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); + int data = std::from_string < int > (sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Integer::getXmlTagName()); return data; } @@ -61,7 +61,7 @@ void Integer::compose(std::deque<sax::Token>& out) const { void Integer::compose(std::deque<sax::Token>& out, int primitive) { out.emplace_back(Integer::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); - out.emplace_back(std::itos(primitive), sax::Token::TokenType::CHARACTER); + out.emplace_back(std::to_string(primitive), sax::Token::TokenType::CHARACTER); out.emplace_back(Integer::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2data/src/primitive/Unsigned.cpp b/alib2data/src/primitive/Unsigned.cpp index a37f7745056fc8fdd9e266a5ed1b1a0202c9723b..1b1b8eb2097072c08a4d3cb09f789be8188c93ff 100644 --- a/alib2data/src/primitive/Unsigned.cpp +++ b/alib2data/src/primitive/Unsigned.cpp @@ -50,7 +50,7 @@ Unsigned Unsigned::parse(std::deque<sax::Token>::iterator& input) { unsigned Unsigned::parseRaw(std::deque<sax::Token>::iterator& input) { sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, Unsigned::getXmlTagName()); - unsigned data = std::stoi(sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); + unsigned data = std::from_string < unsigned > (sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)); sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, Unsigned::getXmlTagName()); return data; } @@ -61,7 +61,7 @@ void Unsigned::compose(std::deque<sax::Token>& out) const { void Unsigned::compose(std::deque<sax::Token>& out, unsigned primitive) { out.emplace_back(Unsigned::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); - out.emplace_back(std::itos(primitive), sax::Token::TokenType::CHARACTER); + out.emplace_back(std::to_string(primitive), sax::Token::TokenType::CHARACTER); out.emplace_back(Unsigned::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } diff --git a/alib2measurepp/src/provisioner/MeasurementProvisionerConfigurationXml.cpp b/alib2measurepp/src/provisioner/MeasurementProvisionerConfigurationXml.cpp index 044d3531a0e9fb3065409c07a4ee04b8b86f630b..9979ac7d81507eaefff718223175e48c5f80858c 100644 --- a/alib2measurepp/src/provisioner/MeasurementProvisionerConfigurationXml.cpp +++ b/alib2measurepp/src/provisioner/MeasurementProvisionerConfigurationXml.cpp @@ -60,7 +60,7 @@ void MeasurementProvisionerConfigurationXml::parseEnvironment ( MeasurementProvi sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::END_ELEMENT, WORKING_DIRECTORY_TAG ); } else if ( data == PIPELINE_ITERATIONS_TAG ) { sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::START_ELEMENT, PIPELINE_ITERATIONS_TAG ); - mpc.environment.pipelineIterations = std::stoi ( sax::FromXMLParserHelper::popTokenData ( iter, sax::Token::TokenType::CHARACTER ) ); + mpc.environment.pipelineIterations = std::from_string < int > ( sax::FromXMLParserHelper::popTokenData ( iter, sax::Token::TokenType::CHARACTER ) ); sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::END_ELEMENT, PIPELINE_ITERATIONS_TAG ); } else { break; @@ -152,10 +152,10 @@ MPCInputDatum MeasurementProvisionerConfigurationXml::parseInputDatum ( const st sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::END_ATTRIBUTE, attrName ); if ( attrName == INPUT_DATA_ATTR_ID_NAME ) { - mpcid.id = std::stoi ( attrVal ); + mpcid.id = std::from_string < int > ( attrVal ); foundId = true; } else if ( attrName == INPUT_DATA_ATTR_COUNT_NAME ) { - mpcid.count = std::stoi ( attrVal ); + mpcid.count = std::from_string < int > ( attrVal ); } else if ( attrName == INPUT_DATA_ATTR_ALIAS_NAME ) { mpcid.alias = std::move ( attrVal ); } else { diff --git a/alib2measurepp/src/provisioner/MeasurementProvisionerResultsXml.cpp b/alib2measurepp/src/provisioner/MeasurementProvisionerResultsXml.cpp index 1b6be258ae65e77fde1ab22456c30d778653d749..688e5aad129326c0f97617ad067d8cae2df8b8b2 100644 --- a/alib2measurepp/src/provisioner/MeasurementProvisionerResultsXml.cpp +++ b/alib2measurepp/src/provisioner/MeasurementProvisionerResultsXml.cpp @@ -166,7 +166,7 @@ void MeasurementProvisionerResultsXml::parseInputs ( MPRInputResult & mprir, std sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::START_ATTRIBUTE, idAttr ); - int id = stoi ( sax::FromXMLParserHelper::popTokenData ( iter, sax::Token::TokenType::CHARACTER ) ); + int id = std::from_string < int > ( sax::FromXMLParserHelper::popTokenData ( iter, sax::Token::TokenType::CHARACTER ) ); sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::END_ATTRIBUTE, idAttr ); @@ -229,7 +229,7 @@ void MeasurementProvisionerResultsXml::parsePipelineStatus ( MPRPipelineResult & if ( data == EXIT_CODE_TAG ) { sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::START_ELEMENT, EXIT_CODE_TAG ); - mprpr.pipelineStatus.exitCode = stoi ( sax::FromXMLParserHelper::popTokenData ( iter, sax::Token::TokenType::CHARACTER ) ); + mprpr.pipelineStatus.exitCode = std::from_string < int > ( sax::FromXMLParserHelper::popTokenData ( iter, sax::Token::TokenType::CHARACTER ) ); sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::END_ELEMENT, EXIT_CODE_TAG ); } else if ( data == ERROR_ORIGIN_TAG ) { sax::FromXMLParserHelper::popToken ( iter, sax::Token::TokenType::START_ELEMENT, ERROR_ORIGIN_TAG ); diff --git a/alib2std/src/extensions/string.cpp b/alib2std/src/extensions/string.cpp index 0301978eb8840b354b896aee884425ce7567a184..933e146cdae557b2eaadc5b2d72e168b806bc9a3 100644 --- a/alib2std/src/extensions/string.cpp +++ b/alib2std/src/extensions/string.cpp @@ -11,26 +11,24 @@ namespace std { -string itos ( int integer, int ) { - stringstream ss; - - ss << integer; - return ss.str ( ); +template < > +string to_string ( const string & value ) { + return value; } -unsigned stou ( const std::string & string, int ) { - stringstream ss ( string ); - unsigned integer; - - ss >> integer; - return integer; +template < > +string from_string ( const string & value ) { + return value; } -string utos ( unsigned integer, int ) { - stringstream ss; +template < > +int from_string ( const string & value ) { + return stoi__private ( value.c_str() ); +} - ss << integer; - return ss.str ( ); +template < > +unsigned from_string ( const string & value ) { + return stoul__private ( value.c_str() ); } string cstringToString ( char * param ) { diff --git a/alib2std/src/extensions/string.hpp b/alib2std/src/extensions/string.hpp index 72e07e958abd532d550e5f991529c4467479c779..05f2d6792b0d8e5b944efc6e94a638a0ffc60c9c 100644 --- a/alib2std/src/extensions/string.hpp +++ b/alib2std/src/extensions/string.hpp @@ -10,11 +10,21 @@ namespace std { -string itos ( int integer, int base = 10 ); +template<typename... Ts> +using to_string_type = auto(Ts...) -> decltype(to_string__private(std::declval<Ts>()...)); -unsigned stou ( const std::string &, int base = 10 ); +template < typename T, typename std::enable_if < std::is_function< to_string_type < T > >::value >::type* = nullptr > +string to_string ( T value ) { + return to_string__private ( value ); +} -string utos ( unsigned integer, int base = 10 ); +template < typename T, typename std::enable_if < std::is_constructible < string, T >::value >::type* = nullptr > +string to_string ( const T & value ) { + return (string) value; +} + +template < typename T > +T from_string ( const string & value ); template < > struct compare < string > { diff --git a/alib2std/src/string b/alib2std/src/string index 737c6d10831df3ccaec73965155f0277306ce92e..a1276e288115908011303b1497d10261d9262d29 100644 --- a/alib2std/src/string +++ b/alib2std/src/string @@ -1,7 +1,20 @@ #ifndef __STRING_HEADER_WRAPPER_ #define __STRING_HEADER_WRAPPER_ +#define stoi stoi__private +#define stol stol__private +#define stoul stoul__private +#define stoull stoull__private +#define to_string to_string__private + #include <bits/../string> + +#undef stoi +#undef stol +#undef stoul +#undef stoull +#undef to_string + #include "compare" #include "extensions/string.hpp" diff --git a/alib2std/test-src/extensions/StringTest.cpp b/alib2std/test-src/extensions/StringTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8f0145c4862e2fd387237a6135fcf10a558464c6 --- /dev/null +++ b/alib2std/test-src/extensions/StringTest.cpp @@ -0,0 +1,22 @@ +#include "StringTest.h" +#include <random> + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StringTest, "bits" ); +CPPUNIT_TEST_SUITE_REGISTRATION( StringTest ); + +void StringTest::setUp() { +} + +void StringTest::tearDown() { +} + +void StringTest::testToString() { + CPPUNIT_ASSERT ( std::is_function< std::to_string_type < int > >::value ); + CPPUNIT_ASSERT ( std::to_string ( std::string ( "1" ) ) == "1" ); + CPPUNIT_ASSERT ( std::to_string ( 1 ) == "1" ); + CPPUNIT_ASSERT ( std::to_string ( 1ul ) == "1" ); + + StringTest::A a; + CPPUNIT_ASSERT ( std::to_string ( a ) == "" ); +} + diff --git a/alib2std/test-src/extensions/StringTest.h b/alib2std/test-src/extensions/StringTest.h new file mode 100644 index 0000000000000000000000000000000000000000..b74cd437f57fe56359e186fd2019e001a94816e0 --- /dev/null +++ b/alib2std/test-src/extensions/StringTest.h @@ -0,0 +1,26 @@ +#ifndef RANDOM_TEST_H_ +#define RANDOM_TEST_H_ + +#include <cppunit/extensions/HelperMacros.h> + +class StringTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE( StringTest ); + CPPUNIT_TEST( testToString ); + CPPUNIT_TEST_SUITE_END(); + + class A { + public: + explicit operator std::string ( ) const { + return ""; + } + }; + +public: + void setUp(); + void tearDown(); + + void testToString(); +}; + +#endif // RANDOM_TEST_H_ diff --git a/alib2str/src/graph/GraphFromStringParser.cpp b/alib2str/src/graph/GraphFromStringParser.cpp index b27259062ed331297d79eb977e919cea9e8a1d6f..1936dae457dee4857d7cb7082ed13a99ec9869a9 100644 --- a/alib2str/src/graph/GraphFromStringParser.cpp +++ b/alib2str/src/graph/GraphFromStringParser.cpp @@ -223,7 +223,7 @@ int GraphFromStringParser::parseValue(std::istream &input) const throw exception::CommonException("Invalid input. Expected INTEGER"); } - return std::stoi(token.value); + return std::from_string < int > (token.value); } template<typename T> diff --git a/alib2str/src/primitive/PrimitiveFromStringParser.cpp b/alib2str/src/primitive/PrimitiveFromStringParser.cpp index ac0625f4790b25286dbdda8ba611ea205649c8c9..7cc79dc0a2db39ad9cbdd6f8873bb390f4bc78dd 100644 --- a/alib2str/src/primitive/PrimitiveFromStringParser.cpp +++ b/alib2str/src/primitive/PrimitiveFromStringParser.cpp @@ -31,7 +31,7 @@ Primitive PrimitiveFromStringParser::parsePrimitive(std::istream& input, const s return Primitive(Character(token.value[0])); case PrimitiveFromStringLexer::TokenType::INTEGER: if(!features.count(FEATURES::INTEGER)) throw exception::CommonException("Disabled formalism Integer"); - return Primitive(Integer(std::stoi(token.value))); + return Primitive(Integer(std::from_string < int > (token.value))); case PrimitiveFromStringLexer::TokenType::ERROR: break; } diff --git a/alib2str/src/tree/TreeFromStringParser.cpp b/alib2str/src/tree/TreeFromStringParser.cpp index d6688a0f889855bb578fcb50e325412a4e7aa5bc..8c5d6124dae0473f08fd71ff72c2c305407385b5 100644 --- a/alib2str/src/tree/TreeFromStringParser.cpp +++ b/alib2str/src/tree/TreeFromStringParser.cpp @@ -55,7 +55,7 @@ Tree TreeFromStringParser::parseTree ( std::istream & input, const std::set < FE if ( token.type == TreeFromStringLexer::TokenType::RANK ) { std::set < alphabet::RankedSymbol > nonlinearVariables; - rank = std::stou ( token.value ); + rank = std::from_string < unsigned > ( token.value ); std::vector < std::smart_ptr < tree::RankedNode > > childs; bool isPattern = false; @@ -136,7 +136,7 @@ tree::RankedNode TreeFromStringParser::parseRankedContent ( std::istream & input TreeFromStringLexer::Token token = m_TreeLexer.next ( input ); if ( token.type == TreeFromStringLexer::TokenType::RANK ) - rank = std::stou ( token.value ); + rank = std::from_string < unsigned > ( token.value ); else throw exception::CommonException ( "Missing rank" ); diff --git a/alib2str/src/tree/TreeToStringComposer.cpp b/alib2str/src/tree/TreeToStringComposer.cpp index c496990673f491cc8ef44b1fdd77c9322f27fd2c..4defa6749e52fc42fd746f4d0f6025c53bd79224 100644 --- a/alib2str/src/tree/TreeToStringComposer.cpp +++ b/alib2str/src/tree/TreeToStringComposer.cpp @@ -24,7 +24,7 @@ TreeToStringComposer::RegistratorWrapper < void, RankedTree > StringToStringComp void TreeToStringComposer::compose ( std::ostream & out, const RankedNode & node ) { alib::stringApi < alphabet::Symbol >::compose ( out, node.getSymbol ( ).getSymbol ( ) ); - out << std::utos ( node.getSymbol ( ).getRank ( ).getData ( ) ); + out << std::to_string ( node.getSymbol ( ).getRank ( ).getData ( ) ); for ( const std::smart_ptr < const RankedNode > & child : node.getChildren ( ) ) { out << " "; @@ -44,7 +44,7 @@ void TreeToStringComposer::compose ( std::ostream & out, const alphabet::RankedS } else { alib::stringApi < alphabet::Symbol >::compose ( out, node.getSymbol ( ).getSymbol ( ) ); - out << std::utos ( node.getSymbol ( ).getRank ( ).getData ( ) ); + out << std::to_string ( node.getSymbol ( ).getRank ( ).getData ( ) ); for ( const std::smart_ptr < const RankedNode > & child : node.getChildren ( ) ) { out << " ";