C++ String.length()或String.size()返回带“的数字”\x";(\x5)
我试图获取C++ String.length()或String.size()返回带“的数字”\x";(\x5),c++,string,count,int,C++,String,Count,Int,我试图获取int值中的字符数。为了到期,我将int转换为string,并采用.length()。从int到string的转换看起来不错,但当我检查.length()的值时,似乎有额外的字符(控制台显示有值“\x5”)。你知道哪里会有问题吗 我也尝试了.size(),得到了相同的结果。我以前使用过这个函数(.length()),实际上我收到了正确的结果 int main() { int roz = 703; string dlus = to_string(roz); string dlus1
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"
我相信你想要这样的东西:
int main()
{
int number = 703;
size_t count = std::to_string(number).length();
std::cout << count;
}
intmain()
{
整数=703;
size_t count=std::to_string(number).length();
std::cout添加到这里的解释中,作为正在发生的事情。首先,我无法复制您的问题,但我有一个变体,它不会对clang和gcc发出警告,但仍然不是您想要的:
std::string dlus = std::to_string(roz);
dlus += dlus.size();
在这里,它使用一个可用的重载:
basic_string& operator+=( CharT ch );
它将整数静默地转换为字符。即使使用-Wall
,它也不会被标记为坏
现在,这里就是。根据这条规则,此代码被标记为可能错误,并且它指示您应该使用std::to_string
在追加数字之前将其正确转换为字符串
如果我们知道您使用的是哪种编译器,那么我们也可以找出此实例中使用的构造函数。尝试size\u t dlus1=dlus.size();如果进行编译,您可能需要打开-Wall
,因为为字符串指定一个数字不是有效的操作。因为string::size()
返回一个数字,而不是字符串,您可以尝试以下操作:string dlus1=to_string(dlus.size());
@zneak-clang为size()
到std::string
的赋值提供“错误:没有可行的转换”。