C、C++中的sprintf和stringstream的使用

cpp 复制代码
///头文件:
#include<sstream>
#include<cstdio>
#include<string>

1、stringstream

cpp 复制代码
std::stringstream ss;
std::string Name="li";
ss<<"Name="<<Name;

std::string str=ss.str();
std::cout<<str<<std::endl;

// 或者使用 std::to_string
std::string str = "数字: " + std::to_string(num);

2、sprintf

cpp 复制代码
        
int num = 20;
char buffer[100];
sprintf(buffer, "Num=%d", num);
std::cout << buffer << std::endl;

char Na[] = "ZHANG";
sprintf(buffer, "NAME:%s,AGE:%d", Na, num);
std::cout << buffer << std::endl;

double price = 100.99;
sprintf(buffer, "Price=%.2f", price);
std::cout << buffer << std::endl;

int value = 255;
sprintf(buffer, "shi:%d,shiliu:0x%X,ba:0%o", value, value, value);
std::cout << buffer << std::endl;

char buffer[50];
char* name = "Tom";
char* country = "China";
sprintf(buffer, "%s lives in %s", name, country); // 连接字符串
printf("Connected string: %s\n", buffer); // 输出:"Tom lives in China"

为防止缓冲区越界,可以采用snprintf函数

cpp 复制代码
snprintf(buffer, sizeof(buffer), "Num:%d,Str:%s", 123, "zxc");
std::cout << buffer << std::endl;
cpp 复制代码
char buffer[10];
int len = snprintf(buffer, sizeof(buffer), "Hello, World!");
printf("String: %s\n", buffer); // 输出:"Hello, W"(被截断)
printf("Intended length: %d\n", len); // 输出:13(实际需要的长度)
相关推荐
Re_zero2 小时前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记2 小时前
Spring Boot条件注解详解
java·spring boot
程序员清风20 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
端平入洛20 小时前
delete又未完全delete
c++
皮皮林55121 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
祈安_1 天前
C语言内存函数
c语言·后端
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing1 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠2 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot