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

来源:百度知道 编辑:UC知道 时间:2024/07/02 12:07:21
运行平台.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 *'

个人观点:
声明成char a[8],是在内存中申请了8 byte的空间,a的类型是“char *”。a是这段内存的首地址。可以通过a对这块内存进行操作,比如说赋值。

而声明成string a,a是一个字符串常量,类型是char。不能通过a对其赋值。

直接用等于吧
a="123";