为什么sprintf只认char a[8]类型,却不认string类型?

运行平台.Windowsconsole平台,特意在DOS平台下用的.代码如下#include<iostream>#include<string>#include<stdi... 运行平台.Windows console平台,特意在DOS平台下用的.
代码如下
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
int main()
{ //char a[8];//用这个正常运行
string a;//用这个弹出错误
sprintf(a,"123");
printf(a);
return 0;
}
刚初在MFC平台运行,出错,还以为是平台问题,后来换回DOS平台,依然出错,
结论:标题
出错:d:\c++项目\13\13.cpp(8) : error C2664: 'sprintf' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'char *'
展开
 我来答
chengnan5603
2009-01-09 · TA获得超过163个赞
知道答主
回答量:46
采纳率:0%
帮助的人:39万
展开全部
个人观点:
声明成char a[8],是在内存中申请了8 byte的空间,a的类型是“char *”。a是这段内存的首地址。可以通过a对这块内存进行操作,比如说赋值。

而声明成string a,a是一个字符串常量,类型是char。不能通过a对其赋值。
尘封梦想
2009-01-03 · TA获得超过139个赞
知道答主
回答量:170
采纳率:0%
帮助的人:118万
展开全部
直接用等于吧
a="123";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式