問題 -> 固定長文字列を std::string* に返す。
ターゲット マシン -> Fedora 11 。
整数値を受け入れ、固定長の文字列を文字列ポインターに返す関数を派生させる必要があります。
例 -> int 値は 0 から -127 の範囲です
したがって、int 値 0 の場合 ->
値 -9 に対して 000 を表示する必要があり
ます -> 値 -50 に対して -009 を返す必要があり
ます -> 値 -110 に対して -050 を返す必要があります -> -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;
}