gpt4 book ai didi

c++ - 从整数值返回固定长度的 std::string

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:41 26 4
gpt4 key购买 nike

问题 -> 将固定长度的字符串返回给 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;

}

最佳答案

您可以使用 I/O manipulators设置您需要的宽度,并用零填充。例如,此程序打印 00123 :

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
cout << setfill('0') << setw(5) << 123 << endl;
return 0;
}

不过,您必须自己处理负值:cout << setfill('0') << setw(5) << -123 << endl版画 0-123 , 不是 -0123 .检查值是否为负数,设置宽度为N-1 , 并在前面加一个减号。

关于c++ - 从整数值返回固定长度的 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11521183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com