c – 从整数值返回固定长度的std :: string
发布时间:2020-12-16 06:45:58 所属栏目:百科 来源:网络整理
导读:问题 – 将固定长度字符串返回到std :: string *. 目标机器 – Fedora 11. 我必须派生一个函数,它接受整数值并将固定的长度字符串返回给字符串指针; 例如 – int值的范围为0到-127 所以对于int值0 – 它应该显示000 对于值-9 – 它应该返回-009 值为-50 –
问题 – >将固定长度字符串返回到std :: string *.
目标机器 – > Fedora 11. 我必须派生一个函数,它接受整数值并将固定的长度字符串返回给字符串指针; 所以对于int值0 – >它应该显示000 所以简而言之,在所有情况下,长度应该相同. 我做了什么:我已经根据下面的要求定义了这个功能. 我需要帮助的地方:我已经派生了一个函数,但我不确定这是否是正确的方法.当我在Windows端的独立系统上测试它时,exe有时会停止工作,但是当我在Linux机器上包含这个功能和整个项目时,它可以完美地工作. /* function(s)to implement fixed Length Rssi */ std::string convertString( const int numberRssi,std::string addedPrecison="" ) { const std::string delimiter = "-"; stringstream ss; ss << numberRssi ; std::string tempString = ss.str(); std::string::size_type found = tempString.find( delimiter ); if( found == std::string::npos )// not found { tempString = "000"; } else { tempString = tempString.substr( found+1 ); tempString = "-" +addedPrecison+tempString ; } return tempString; } std::string stringFixedLenght( const int number ) { std::string str; if( (number <= 0) && (number >= -9) ) { str = convertString( number,"00"); } else if( (number <= -10) && (number >= -99) ) { str = convertString( number,"0"); } else { str= convertString(number,""); } return str; } // somewhere in the project calling the function ErrorCode A::GetNowString( std::string macAddress,std::string *pString ) { ErrorCode result = ok; int lvalue; //some more code like iopening file and reading file //..bla // ..bla // already got the value in lvalue ; if( result == ok ) { *pString = stringFixedLenght( lValue ); } // some more code return result; } 解决方法
我没有反对使用流的版本,但你可以比你的代码更简单地完成所有这些:
std::string fixedLength(int value,int digits = 3) { unsigned int uvalue = value; if (value < 0) { uvalue = -uvalue; } std::string result; while (digits-- > 0) { result += ('0' + uvalue % 10); uvalue /= 10; } if (value < 0) { result += '-'; } std::reverse(result.begin(),result.end()); return result; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |