我试图获取int
值中的字符数。为了适当,我将int
转换为string
并接受了.length()
。从int
到string
的转换看起来不错,但是当我检查.length()
的值时,似乎还有额外的字符(控制台显示值“ \ x5”)。您知道哪里可能有问题吗?
我也尝试.size()
,结果相同。我在(.length()
)之前使用了此功能,实际上我收到了正确的结果。
int main() {
int roz = 703;
string dlus = to_string(roz);
string dlus1 = dlus.size();
int dlu = atoi(dlus1.c_str());
}
结果:
dlus1 = "3"
dlu = "3"
答案 0 :(得分:2)
我相信您想要这样的东西:
int main()
{
int number = 703;
size_t count = std::to_string(number).length();
std::cout << count;
}
但这是重复的问题。您可以在这里找到更多信息:C++ - how to find the length of an integer
答案 1 :(得分:1)
根据发生的事情在此处添加说明。首先,我无法重现您的问题,但是我有一个变种,它不会在clang和gcc上发出警告,但仍然不是您想要的:
std::string dlus = std::to_string(roz);
dlus += dlus.size();
这里,它使用了可用的重载:
basic_string& operator+=( CharT ch );
,它将无声地将整数转换为char。即使使用-Wall
,也不会被标记为不良。
现在,这里是clang-tidy comes in。使用此规则,此代码被标记为可能是错误的,它指示您应在附加数字之前使用std::to_string
将数字正确转换为字符串。
如果我们知道您使用的是哪个编译器,那么我们也可以找出在此实例中使用了哪个构造函数。