String.length()或String.size()返回带有“ \ x”(\ x5)的数字

时间:2019-01-09 22:50:45

标签: c++ string count int

我试图获取int值中的字符数。为了适当,我将int转换为string并接受了.length()。从intstring的转换看起来不错,但是当我检查.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"

2 个答案:

答案 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将数字正确转换为字符串。

如果我们知道您使用的是哪个编译器,那么我们也可以找出在此实例中使用了哪个构造函数。