科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件c/c++中字符串常量的不相等性,以及字符串的copy

c/c++中字符串常量的不相等性,以及字符串的copy

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

c/c++中字符串常量的不相等性,以及字符串的copy.

来源:中国软件网 2008年4月1日

关键字: Copy 字符串 C++ C Linux

  • 评论
  • 分享微博
  • 分享邮件

#include <iostream>
using namespace std;
void main(void)
{
if("test"=="test")
{
cout<<"相等";
}
else
{
cout<<"不相等";
}
}
    上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c++却不是这样。

    为什么呢?

    答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较!

file://程序作者:管宁
file://站点:www.cndev-lab.com
file://所有稿件均有版权,如要转载,请务必著名出处和作者

#include <iostream>
#include <string>
using namespace std;
void main(void)
{
if(strcmp("test","test")==0)
{
cout<<"相等";
}
else
{
cout<<"不相等";
}
cin.get();
}


    strcmp()的函数原形是,int strcmp(const char* str1,const char* str)

    相当将会返回一个等于0的整数,不相等的时候将会返回一个非0整数!

file://程序作者:管宁
file://站点:www.cndev-lab.com
file://所有稿件均有版权,如要转载,请务必著名出处和作者

#include <iostream>
#include <string>
using namespace std;
void main(void)
{
char test[]="test str!";
char str[15];
strcpy(str,test);
cout<<str<<endl;

int a[]={1,2,3,4,5};
int b[5];
memcpy(b,a,sizeof(a)*sizeof(int));
for(int i=0;i<5;i++)
{
cout<<b[i]<<",";
}
cin.get();
}

    上面的代码中的strcpy用来处理字符串数学组的copy,由于字符串数组属于const char*也就是常量指针所以是不能用a="test str!";的方式赋值的,接在后面的memcpy用于处理非\0结尾的数组的copy处理,memcpy第三个参数是设置b在内存中所需要的内存空间大小所以用sizeof(a)*sizeof(int)来处理!

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章