C++有没有类似C中的sprintf和sscanf函数?

summersdw1 2008-05-23 05:31:33
C++有没有类似C中的sprintf和sscanf函数?
比如:
C中sprintf:
char a[10]="12+";
char b[10]="12";
int d=24;
char c[200]="";
sprintf(c,"%s%s%c%d",a,b,'=',d);//c="12+12=24"

C++中:
string a("12+");
string b("12");
int d=24;
string c;
c如何得到="12+12=24"?

C中sscanf:
char a[100]="12.4,43.2,MATC,112"
double a1,a2;
char a3[10]="";
int a4;
sscanf(a,"%lf,%lf,%s,%d",a1,a2,a3,a4);
a1=12.4;a2=43.2;a3="MATC",a4=112;

C++中:
string a="12.4,43.2,MATC,112"
double a1,a2;
string a3="";
int a4;

如何得到a1=12.4;a2=43.2;a3="MATC",a4=112;?

请高手指教非常感谢!









...全文
1984 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tang6120 2008-05-24
  • 打赏
  • 举报
回复
用format
jieao111 2008-05-24
  • 打赏
  • 举报
回复
更安全,更强大的sstream比你的sprint好多了!
lyle3 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xjy1204 的回复:]
C/C++ code#inlucde <sstream>

stringstream ss;
ss <<a <<b <<"=" <<d <<ends;
cout <<ss.str() <<endl;
[/Quote]
grellen 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xjy1204 的回复:]
C/C++ code#inlucde<sstream>stringstream ss;
ss<<a<<b<<"="<<d<<ends;
cout<<ss.str()<<endl;
[/Quote]
hslinux 2008-05-23
  • 打赏
  • 举报
回复
直接使用那2个函数就行了,C++兼容绝大部分的C函数。
summersdw1 2008-05-23
  • 打赏
  • 举报
回复
非常感谢各位,sprintf可以利用stringstream来实现,
但是在C++中使用sscanf效果和在标准C中不太一样,是否有其他的办法?

C++中:
char a[100]="12.4,43.2,MATC,112"
double a1,a2;
char a3[10]="";
int a4;
sscanf(a,"%lf,%lf,%s,%d",a1,a2,a3,a4);
a1=12.4;a2=43.2;a3="MATC",a4=112;

并不能得到相应的值~~
MagiSu 2008-05-23
  • 打赏
  • 举报
回复
楼上的改成<sstream>吧。
handsomezwm 2008-05-23
  • 打赏
  • 举报
回复

C++ code:

#include "iostream"
#include "string"
#include "sstream"
using namespace std;

void main()
{
string a("12+");
string b("12");
int d=24;
string c;

//add by meteor007
string e;
ostringstream ost(e);
ost<<d;

c=a+b+"="+ost.str();

cout<<c<<endl;
}

程序已经测试过,LZ可以放心使用!
xushengcn 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xjy1204 的回复:]
C/C++ code#inlucde <sstream>

stringstream ss;
ss <<a <<b <<"=" <<d <<ends;
cout <<ss.str() <<endl;
[/Quote]
对,用io流,尽量利用C++的特性
xjy1204 2008-05-23
  • 打赏
  • 举报
回复
#inlucde <sstream>

stringstream ss;
ss <<a <<b <<"=" <<d <<ends;
cout <<ss.str() <<endl;
「已注销」 2008-05-23
  • 打赏
  • 举报
回复
可以直接用
stoneyrh 2008-05-23
  • 打赏
  • 举报
回复
可你直接用
不过不建议这样使用
zhangyanli 2008-05-23
  • 打赏
  • 举报
回复
楼主直接用c库,c是c++的子集嘛,没必要这么扣语言细节,否则是早会后悔的。
Soulic 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 summersdw1 的帖子:]
C++中:
string a("12+");
string b("12");
int d=24;
string c;
c如何得到="12+12=24"?
[/Quote]
不知道这样行不行
c.append( a + b + "=" + d );
Soulic 2008-05-23
  • 打赏
  • 举报
回复
在c++中可以直接使用c库的
blooney 2008-05-23
  • 打赏
  • 举报
回复
应该也有吧
不过至少在C++里可以还用C的那些库,至少还可以用

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧