English 中文(简体)
果园* 转化成问题导致无印刷
原标题:const char* convert have problem result in print nothing

I try to convert uint64_t to const char *. But I find If I use
const char *sz2 = std::to_string(channel_id2).c_str();, it print nothing.

when I use string to take std::to_string(channel_id2) s result and convert the string to const char *, it can print the infomation normally. Then I make other experiments.

enter image description here

“entergraph

“

问题回答

This is fine:

// This creates a temp string
std::string temp = std::to_string(channel_id2);

// This is fine, because temp is a variable (and so exists in memory)
const char *sz2 = temp.c_str();

然而,如果是的话:

const char *sz2 = std::to_string(channel_id2).c_str();

行动顺序是:

  1. Call std::to_string, which generates a temporary string object.
  2. Use c_str() to get a pointer to the temporary string contents
  3. Free the temporary string (thus freeing the memory that sz2 is pointing too)

其结果是,sz2无所作为,因此,你获得了不实的印本。

或者说要把你的一条法典跨过多个方面,这就是:

const char *sz2; //< uninitialised

// scope the lifespan of the temporary
{
  // generate temp
  std::string temp = std::to_string(channel_id2);

  // grab address..
  sz2 = temp.c_str();

  // at this point, the destructor of temp is called... 
}

// now sz2 is invalid from here




相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签