C++中的string到底是变量还是常量?

lijinghan21 2010-03-25 09:10:33
各位大侠,小弟初学C++,看到很多资料上都把char型数组和string类定义的变量等同起来,但是我这个IO程序中就不等同了,请问C++中的string到底是变量还是常量呢?如果string对于C++来说是字符串变量,那我的程序错在哪里呢?

#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>
using namespace std;
int main()
{
using namespace std;
char srcname[20]; //用char型数组是可以的
char dstname[20];
// string srcname("ss"); //换成string类型就不行了吗?
// string dstname("ssa");
ifstream input;
ofstream output;
cout<<"文件拷贝即将进行\n\n";
cout<<"请输入源文件名(包括路径和扩展名):\n";
cin>>srcname;

cout<<"请输入目标文件名(包括路径和扩展名):\n";
cin>>dstname;

input.open(srcname,ios::binary);
if(input.fail())
{
cout<<"打不开输入文件\n";
exit(1);
}

output.open(dstname,ios::binary);
if(output.fail())
{
cout<<"不能写入输出文件\n";
exit(1);
}

output<<input.rdbuf();

input.close();
output.close();
return 0;
}
...全文
711 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
superhard_d 2010-03-26
  • 打赏
  • 举报
回复
open方法没有重载string类型的参数,所以必须用string的方法将其转换成它能接受的参数类型
TW_00001 2010-03-25
  • 打赏
  • 举报
回复
string是C++的stl里面的

所谓常量与否要看编译的时候是否是需要确定的
jipin2006 2010-03-25
  • 打赏
  • 举报
回复
在C++中,input.open()中第一个参数要求是const char*,而用直接用string对象并不是const的,因此要用string类的一个名为c_str()的函数,返回的类型相符,7楼的代码解答是能编译通过的。
cy330206 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mstlq 的回复:]
string在c++里面是一种变量的类型
[/Quote]
楼主可以去看看我提的问题,,貌似错不多,,呵呵
昵称很不好取 2010-03-25
  • 打赏
  • 举报
回复
各有千秋吧,string类有string的好处,不用内存释放,比较简洁,有一堆方法可以用
c_str()取的是临时地址,不保存使用就没什么问题
yuzl32 2010-03-25
  • 打赏
  • 举报
回复

#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>
using namespace std;
int main()
{
using namespace std;
//char srcname[20];
//char dstname[20];
string srcname("ss");
string dstname("ssa");
ifstream input;
ofstream output;

cout<<"文件拷贝即将进行\n\n";
cout<<"请输入源文件名(包括路径和扩展名):\n";
cin>>srcname;

cout<<"请输入目标文件名(包括路径和扩展名):\n";
cin>>dstname;

//相应的更改open接收的是c字符串
input.open(srcname.c_str(),ios::binary);
if(input.fail())
{
cout<<"打不开输入文件\n";
exit(1);
}

//相应的更改
output.open(dstname.c_str(),ios::binary);
if(output.fail())
{
cout<<"不能写入输出文件\n";
exit(1);
}

output<<input.rdbuf();

input.close();
output.close();
return 0;
}
lijinghan21 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 thefirstz 的回复:]
string是一个class~~
你之所以不对,是因为open不接受string作为参数,用srcname.c_str()试试
[/Quote]

对了!谢谢啊,不过看到网上说这个c_str()函数好像是Inprise公司不推荐的做法。那么老练的程序员是不是一般采用char型数组或者指针啊?帮忙再回答一下好吗?分给你了
lovesi3344 2010-03-25
  • 打赏
  • 举报
回复


[Quote=引用 3 楼 mstlq 的回复:]
string在c++里面是一种变量的类型
[/Quote]
liukai_happy 2010-03-25
  • 打赏
  • 举报
回复
string 是一种类结构, 方便使用 , 其实 string 能够进行的 操作 , 用 char a[] 数组 和其他造作 也可以实现!!
mstlq 2010-03-25
  • 打赏
  • 举报
回复
string在c++里面是一种变量的类型
昵称很不好取 2010-03-25
  • 打赏
  • 举报
回复
string是一个class~~
你之所以不对,是因为open不接受string作为参数,用srcname.c_str()试试
zkzhfx 2010-03-25
  • 打赏
  • 举报
回复
数组与字符串不一样
《概率论与数理统计》是理工科大学的一门重要基础课程,它结合了概率论的基本理论与统计学的方法,用于分析和处理随机现象。第二版的完整版多媒体教学系统旨在通过丰富的教学资源和互动体验,帮助学生深入理解和掌握这门学科的核心概念。 一、概率论基础 概率论是研究随机事件及其规律性的数学理论,主要包括以下几个关键概念: 1. 随机试验:概率论的研究对象,如掷骰子、抽卡等。 2. 样本空间:所有可能结果的集合。 3. 事件:样本空间的子集,代表某种特定的结果。 4. 概率:事件发生的可能性,通常介于0和1之间,表示为P(A)。 5. 条件概率:在已知某个事件发生的情况下,另一个事件发生的概率。 6. 乘法法则和加法法则:用于计算两个独立或不独立事件的概率。 二、概率分布 1. 离散概率分布:如二项分布、泊松分布、几何分布、超几何分布等,用于描述离散随机变量的分布情况。 2. 连续概率分布:如均匀分布、正态分布、指数分布等,适用于连续随机变量。 三、统计学基础 1. 参数估计:通过样本数据估计总体参数,如均值、方差等。 2. 抽样分布:统计量在多次重复抽样下的分布情况。 3. 点估计和区间估计:给出参数的一个估计值或一个估计范围。 4. 假设检验:检验关于总体参数的假设是否成立,如t检验、卡方检验、F检验等。 5. 回归分析:研究两个或多个变量间的关系,预测一个变量基于其他变量的值。 四、数理统计方法 1. 最大似然估计:寻找使样本数据出现概率最大的参数估计方法。 2. 矩估计:通过总体矩与样本矩的关系来估计参数。 3. 正态分布的心极限定理:大量独立随机变量的和近似服从正态分布,即使这些变量本身非正态。 4. 协方差和相关系数:衡量两个随机变量之间线性关系的强度和方向。 5. 方差分析(ANOVA):比较多个组别间的均值差异。 五、多元统计分析 1. 多元正态分布:多维空间的正态分布,常用于多元线性回归。 2. 判别分析:根据已知分类的样本数据,建立判别函数,对新数据进行分类。 3. 聚类分析:将相似数据分组,揭示数据内在结构。 4. 主成分分析(PCA):降低数据维度,提取主要特征。 六、多媒体教学系统 该教学系统可能包含以下组成部分: 1. 视频讲座:专家讲解理论和例题,直观展示概念。 2. 动画演示:动态模拟随机过程,帮助理解概率模型。 3. 交互式练习:提供习题和答案,实时反馈学习效果。 4. 实验教程:设计数学实验,让学生亲手操作,加深理解。 5. 电子教材:包含文字、图表、案例等丰富内容,便于自主学习。 通过这个多媒体教学系统,学生不仅可以学习到概率论与数理统计的理论知识,还能通过实践应用和互动学习,提升解决实际问题的能力。

65,198

社区成员

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

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