zoukankan      html  css  js  c++  java
  • 将string转换成char*

    string 是c++标准库里面其中一个,封装了对字符串的操作 
    把string转换为char* 有3中方法: 
    1.data 
    如: 
    string str="abc"; 
    char*p=str.data(); 
    2.c_str 
    如:string str="gdfd"; 
         const char*p=str.c_str(); 
    3.copy
    比如 
    string str="hello"; 
    char p[40]; 
    str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
    *(p+5)=''; //要手动加上结束符
    cout <<p;

    示例程序:

    #include<iostream>
    #include<string>
    using namespace std;

    int main()
    {
    string line;
    getline(cin,line);
    char str[20];
    int size=line.size();
    line.copy(str,line.size(),0);
    //char str[20]="liuyanbo";
    char upper[20];
    for(int i=0;i<size;++i)
    {
       //cout<<static_cast<char>(toupper(str[i]));
       upper[i]=static_cast<char>(toupper(str[i]));
    }
    upper[i]='';
    cout<<upper<<endl;
    return 0;

    }


    error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string

    #include<iostream>

    #include <string>

    using namespace std;
    void main()
    {

       string aaa= "abcsdd"; //用c++特有的字符串变量存放字符串
       string av= "abc"; 
       printf("looking for abc from abcdecd %s ", (strcmp(aaa,av)) ? "Found" : "Not Found");
    }

    出现错误如下


    : error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
            No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

    出现错误的原因为

    strcmp函数原型为:
    int   strcmp(
            const   char   *string1,
            const   char   *string2  
    );

    其参数是传统的char   *型字符串,string型数据类型是不能作为其参数的
    但可以通过string成员函数string::c_str()转换成char*类型。象这样调用:
    strcmp(str1.c_str(),   str2.c_str())  

    改正错误后可写为

    #include<iostream>
    #include <cstring>
    #include <string>

    using namespace std;
    void main()
    {
    char* aaa= "abcsdd"; //用字符指针指向一个字符串
    char* av= "abc";

         printf("looking for abc from abcdecd %s ",
             (strcmp(aaa,av)) ? "Found" : "Not Found");
    }

    //第三种访问字符串的方法是,也是最初的c中的方法:用字符数组存放一个字符串 char str[]="asfcs";便于用字符串函数处理。

  • 相关阅读:
    大数相乘
    分层打印二叉树
    sharepoint 编辑页面时应该注意的一些地方
    sharepoint2007在创建Web应用程序时的问题
    asp.net页面编码问题
    “ ”在IE和FF下显示不一致问题
    DataReader为数据源时的数据获取时的数据获取问题
    sharepoint个人视图修改问题
    母板页图片使用相对路径显示问题
    Web Part Templates for Microsoft Visual Studio .NET下载地址
  • 原文地址:https://www.cnblogs.com/acmwangpeng/p/5524898.html
Copyright © 2011-2022 走看看