问题 -> 将固定长度的字符串返回到 std::string*。
目标机器 -> Fedora 11 。
我必须派生一个接受整数值并将固定长度的字符串返回到字符串指针的函数;
例如 -> int 值在 0 到 -127 的范围内
所以对于 int 值 0 -> 它应该显示 000
来表示值 -9 -> 它应该返回 -009
来表示值 -50 -> 它应该返回 -050
来表示值 -110 -> 它应该返回 -110
所以简而言之,长度在所有情况下都应该相同。
我做了什么:我已经根据如下所示的要求定义了功能。
我需要帮助的地方:我已经导出了一个函数,但我不确定这是否是正确的方法。当我在 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;
}