当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : c++字符串来连接后的返回值问题
帖子发表于 : 2008-09-16 17:09 

注册: 2008-09-14 15:35
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
/*
我知道好多教科书上说的都是在c++中两个字符串比如s1,s2连接即s1+s2的返回值为指向s1首字符的指针,且s1为原来添加上s2的结果(好像这也是c++标准),可是我在ubuntu下用gcc编译下面的程序结果不是这样的,怎么回事阿?哪位解释下,gcc不是比vc还标准吗?!
*/
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
string a,s1="Hello ";
string s2="123";
a=s1;

cout<<((a==s1)?"":"not ")<<"equel"<<endl;

cout<<a+s2<<endl;

cout<<"before:"<<a<<endl;//主要就是这里要解释!
reverse(a.begin(),a.end());
cout<<a<<endl;

cout<<a.replace(0,9,9,'c')<<endl;

cout<<((s1.find("ell")!=-1)?"":"not ")<<"equel"<<endl;
cout<<((s1.find('c')!=-1)?"":"not ")<<"equel"<<endl;
return 0;
}

输出的结果:
equel
Hello 123
before:Hello //这里!!
olleH//当然还这里!
ccccccccc
equel
not equel


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-09-16 17:37 

注册: 2008-06-23 14:42
帖子: 307
送出感谢: 0 次
接收感谢: 0 次
莫非是说不用赋值就改变了某个操作数?如果那样我死活也不敢再动string了...估计是你理解错了
虽然我没用过STL,但也大概知道运算过程会产生临时对象的,和MFC的CString实现方法大同小异


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-09-16 20:25 
头像

注册: 2007-08-24 20:16
帖子: 164
地址: Hangzhou, China
送出感谢: 0 次
接收感谢: 0 次
String#+不会改变其本身的引用的对象吧,只是返回一个结果。

你在哪个文档看到Cpp标准是这么写的?你说的是String#+=吧?


_________________
http://www.google.com/profiles/chenk85


页首
 用户资料  
 
4 楼 
 文章标题 : 是钱能课本出错了!!
帖子发表于 : 2008-09-17 17:20 

注册: 2008-09-14 15:35
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
现在明白了,结果就是满足标准的,是钱能的书(c++程序设计教程 第二版)误导了,书里p80有错,注意程序结尾的一句话(“其运行结果与f0304.cpp相同”)!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 是钱能课本出错了!!
帖子发表于 : 2008-09-18 9:16 
头像

注册: 2007-08-24 20:16
帖子: 164
地址: Hangzhou, China
送出感谢: 0 次
接收感谢: 0 次
我是小超子 写道:
现在明白了,结果就是满足标准的,是钱能的书(c++程序设计教程 第二版)误导了,书里p80有错,注意程序结尾的一句话(“其运行结果与f0304.cpp相同”)!


国内的书挺害人。看些国外的Cpp经典吧。


_________________
http://www.google.com/profiles/chenk85


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 是钱能课本出错了!!
帖子发表于 : 2008-09-18 9:58 
头像

注册: 2008-07-30 23:21
帖子: 13226
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 36
接收感谢: 121
maninred 写道:
国内的书挺害人。看些国外的Cpp经典吧。

:lol:


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 是钱能课本出错了!!
帖子发表于 : 2008-09-18 12:44 

注册: 2008-09-14 15:35
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
自由建客 写道:
maninred 写道:
国内的书挺害人。看些国外的Cpp经典吧。

:lol:

呵呵偷懒,国外的书老长,先学国内的有个基础再看。
顺便,我还给钱能发了email,尽然回复了,而且回的挺快,主要是出版社作了修改了,结果错了。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: c++字符串来连接后的返回值问题
帖子发表于 : 2008-10-19 17:02 
头像

注册: 2006-12-07 17:32
帖子: 234
送出感谢: 0 次
接收感谢: 0 次
错了,应该是

代码:
#include <iostream>
#include <string>
using namespace std;

int main() {
   string s1="Hello ";
   string a="123";
   s1+=a;
   cout<<s1;
   return 0;
}


中国人写的c++的书可以算钱能的最好了,可以做个入门。


_________________
十年磨一剑,霜刃未曾试。今日把示君,谁有不平事?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译