| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:[求助]C--串的赋值 复制 修改 比较 等问题
只看楼主 加入收藏
隐藏着的某人
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-10-8
收藏
 问题点数:0 回复次数:8 
[求助]C--串的赋值 复制 修改 比较 等问题
#include <iostream>
using namespace std;
void main()
{
char* s1="hello";
char* s2="123";
char a[20];
strcpy(a,s1);//s1复制到a中
cout<<(strcmp(a,s1)==0?"":"not")<<"equal\n";
cout<<strcat(a,s2)<<endl;
cout<<strrev(a)<<endl;
cout<<strset(a,'c')<<endl;// 这句话是什么意思啊??
cout<<(strstr(s1,"hel")?"":"not")<<"found\n";
cout<<(strchr(s1,'c')?"":"not")<<"found\n";
}
strset(a,'c') 这句话 书上就解释为设置!! 具体是什么意思! 为什么这句话的结果是输出了8个C 但是书上说的是输出了9个C
搜索更多相关主题的帖子: 赋值 
2006-10-14 18:10
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
尽管我不知道strset什么意思
但我知道你的a里面就有8个有效空间

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-10-14 22:28
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
书上错了吧
strset(a,'c')是把字符串a中的每个字符重置为'c'

2006-10-14 22:42
隐藏着的某人
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-10-8
收藏
得分:0 
谢谢楼上的 原来是这样 懂了!! 下面是用 string 表达的 效果也是一样的!
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void main()
{
string a;
string s1="hello";
string s2="123";
a=s1;
cout<<(a==s1?"":"not")<<"equal\n";
cout<<a+s2<<endl;
reverse(a.begin(),a.end());
cout<<a<<endl;
cout<<a.replace(0,9,9,'c')<<endl;
cout<<(s1.find("ell")!=-1?"":"not")<<"found\n";
cout<<(s1.find('c')!=-1?"":"not")<<"found\n";
}
中的cout<<a.replace(0,9,9,'c')<<endl; 输出了9个C 但是对这句我始终不怎么理解!!
wangxiang 帮我解释下哈!! replace 说的是替代的意思吧! 找了很多资料都没 像上面怎么写的!


为了我的游戏事业而奋斗
2006-10-15 19:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
replace有很多重载形式(解释一下你这里参数的意思):
第一个参数是a的起始位置,第二个参数是结束位置,第三个参数是被替换的字符个数,第4个是用来替换的字符。



basic_string::replace
basic_string& replace(size_type p0, size_type n0,
const E *s);
basic_string& replace(size_type p0, size_type n0,
const E *s, size_type n);
basic_string& replace(size_type p0, size_type n0,
const basic_string& str);
basic_string& replace(size_type p0, size_type n0,
const basic_string& str, size_type pos, size_type n);
basic_string& replace(size_type p0, size_type n0,
size_type n, E c);
basic_string& replace(iterator first0, iterator last0,
const E *s);
basic_string& replace(iterator first0, iterator last0,
const E *s, size_type n);
basic_string& replace(iterator first0, iterator last0,
const basic_string& str);
basic_string& replace(iterator first0, iterator last0,
size_type n, E c);
basic_string& replace(iterator first0, iterator last0,
const_iterator first, const_iterator last);
Each member function replaces up to n0 elements of the controlled sequence beginning with position p0, or the elements of the controlled sequence beginning with the one pointed to by first, up to but not including last. The replacement is the operand sequence specified by the remaining operands. The function then returns *this.

In this implementation, if a translator does not support member template functions, the template:

template<class InIt>
basic_string& replace(iterator first0, iterator last0,
InIt first, InIt last);
is replaced by:

basic_string& replace(iterator first0, iterator last0,
const_iterator first, const_iterator last);

[此贴子已经被作者于2006-10-15 19:54:43编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-15 19:54
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
string类型的replace有10个不同的版本,他们的差别在于以不同的方式指定要删除的字符和要插入的新字符.
前两个参数都是用来指定删除元素的范围,其他的参数都是用于指定插入新的字符.
a.replace(0,9,9,'c')//删除a中从下标0开始的9个字符,第二9是指定插入新字符的个数,'c'是要插入的新字符,所以就输出了9个c了.a.replace(0,9,19,'c')则是输出19个c了

string的replace 有很多的版本,用时要注意一下
还有你的void main()//用int main(){...return 0;},会比较符合C++标准

2006-10-15 20:08
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
以下是引用wfpb在2006-10-15 19:54:01的发言:
replace有很多重载形式(解释一下你这里参数的意思):
第一个参数是a的起始位置,第二个参数不是结束位置,第三个参数是被替换的字符个数,第4个是用来替换的字符。
而是删除元素的个数(wfpb可能粗心了点,呵呵)

[此贴子已经被作者于2006-10-15 20:18:12编辑过]


2006-10-15 20:16
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
哦,看错了。不好意思,第2个参数的确是被up的个数。
Each member function replaces up to n0 elements of the controlled sequence beginning with position p0, or the elements of the controlled sequence beginning with the one pointed to by first, up to but not including last.

第3个参数,MSDN上似乎没有讲述。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-15 21:42
隐藏着的某人
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-10-8
收藏
得分:0 

非常感谢 wangxiang 大哥 和wfpb 大哥 精彩解释!! 我完全弄明白了!!
还有非常感谢你提出 void main() 的问题!! 以后我会注意用  int main() return 0;的形似写程序了!
谢谢大家的帮助 有了大家的帮助 我一定会认真学习程序!! 不会辜负大家对我的帮助滴  呵呵~~


为了我的游戏事业而奋斗
2006-10-16 13:28
快速回复:[求助]C--串的赋值 复制 修改 比较 等问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021116 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved