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(实际需要的长度)
相关推荐
RyFit25 分钟前
SpringAI 常见问题及解决方案大全
java·ai
石山代码38 分钟前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事1 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海1 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠2 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP2 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
德思特2 小时前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
张小姐的猫3 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
YOU OU3 小时前
Spring IoC&DI
java·数据库·spring
один but you3 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言