简体   繁体   中英

Converting an integer to Char Pointer using C

I am trying to convert an integer to a char pointer as shown below. The data results are different. I am not sure what is going wrong. Please help me in correcting the code.

int main(){ 
    char *key1 = "/introduction";
    std::ostringstream str1;
    str1<< 10;   
    std::string data=str1.str();
    std::cout <<"The data value="<<data<<std::endl;  // The data value= 10
    char *intro= new char[data.length()+1];
    
    strcpy(intro, data.c_str());
    std::cout <<"The data value="<<*intro <<std::endl; // The data value=1
          
    return 0;
}

I am not sure why two data value are printed different ie, 10 and 1.

In C++, when trying to print all the contents of a char * with cout , you should pass the pointer, ie cout << intro << endl .

What you've done here is dereferenced the char * , so cout << *intro << endl is equivalent to cout << intro[0] << endl , which is equivalent to printing the first character, 1 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM