C++ std::to_string

std::to_string

c++ to_string() 函数的主要作用是将数字转换为字符串。
to_string() 函数定义在标头 ,因此在使用 to_string() 函数之前需要包含此头文件。

c++ to_string 函数

to_string是C ++ 11中的标准库函数,它将数字转换为字符串,并可以接受任何数字类型。

#include <iostream>
#include <string>
using namespace std;
int main() {
    int num1 = 123;
    long num2 = 456789;
    float num3 = 3.14f;
    double num4 = 2.7182818;
    string str1 = to_string(num1);
    string str2 = to_string(num2);
    string str3 = to_string(num3);
    string str4 = to_string(num4);
    cout << str1 << endl;
    cout << str2 << endl;
    cout << str3 << endl;
    cout << str4 << endl;
    return 0;
}

123
456789
3.140000
2.718282

to_string 函数作用

使用to_string返回的结果是一个字符串,它也可以使用C ++ STL中的标准string函数进行处理。

#include <iostream>
#include <string>
using namespace std;
int main() {
    double num = 123.456789;
    string str1 = to_string(num);
    string str2 = "Hello World";
    cout << str1.substr(0, 5) << endl; //截取前五个字符
    cout << str2.size() << endl; //获取字符串长度
    return 0;
}

123.4
11

c++ to_string 保留小数点后六位

默认情况下,to_string 默认输出6位小数。
使用 to_string 函数可以将数字转换为字符串。如同 std::format(“{}”, value) 转换数值为字符串。

#include <iostream>
#include <string>
using namespace std;
int main() {
    double num = 1212.345678912;
    string str1 = to_string(num);
    string str2 = to_string(num).substr(0, 9);
    string str3 = to_string(num).substr(0, to_string(num).find(".", 0)+7);
    cout << "str1: " << str1 << endl;
    cout << "str2: " << str2 << endl;
    cout << "str3: " << str3 << endl;
    return 0;
}

str1: 1212.345679
str2: 1212.3456
str3: 1212.345679
可以看到,str2仅保留整个前九位,而str3将小数点后的数字截取到第六位。

c++ to_string补位

to_string不会在数字前面添加前导零。如果您需要添加前导零以使数字看起来更整齐,则可以使用其他一些方法:
iomanip

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main() {
    //方法一:使用iomanip setfill和setw操作
    int num1 = 123;
    stringstream ss;
    // 	Set field width (function), Set fill character (function)
    ss << setw(8) << setfill('0') << num1;
    cout << ss.str() << endl;

    //方法二:使用sprintf函数
    int num2 = 456;
    char buf[10];
    sprintf(buf, "%08d", num2);
    cout << buf << endl;
    return 0;
}

00000123
00000456

c++ to_string打印二进制数

to_string还允许指定输出数字的格式,例如二进制。下面的示例显示如何使用to_string将数字转换为二进制字符串。

#include <iostream>
#include <string>
#include <bitset>
using namespace std;
int main() {
    int num = 123;
    string str = bitset(num).to_string();
    cout << str << endl; //输出二进制数
    return 0;
}

00000000000000000000000001111011

c++ to_string为空

使用to_string函数转换空指针时,将引发std ::bad_alloc异常。

#include <iostream>
#include <string>
using namespace std;
int main() {
    int *ptr = nullptr;
    try {
        string str = to_string(*ptr);
    }
    catch (const std::bad_alloc & e) {
        cout << "bad_alloc" << endl;
        cout << "Exception: " << e.what() << endl;
    }
    catch (const std::exception &e) {
        cout << "exception" << endl;
        cout << "Exception: " << e.what() << endl;
    }
    cout << "end" << endl;
    return 0;
}

c++ to_string 限定长度

使用to_string函数转换数字时,如果超出字符串的最大长度,将自动截断。为了确保输出的字符串不会太长,可以使用std :: to_chars,该函数可以指定输出的最大长度。

#include <iostream>
#include <string>
using namespace std;
int main() {
    int num = 123456;
    char buffer[10];
    auto [p, ec] = to_chars(buffer, buffer + 10, num);
    cout.write(buffer, p - buffer) << endl; //最大输出10个字符
    return 0;
}
  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值