convert a char* to std::string
std::string
has a constructor for this:
const char *s = "Hello, World!";
std::string str(s);
Note that this construct deep copies the character list at s
and s
should not be nullptr
, or else behavior is undefined.
How to convert char* to std::string
std::string
has a constructor for this:
const char *str = "Shravan Kumar";
std::string str(str);
Just make sure that your char *
isn't NULL
, otherwise it will lead to undefined behavior.
std::string to char*
It won't automatically convert (thank god). You'll have to use the method c_str()
to get the C string version.
std::string str = "string";
const char *cstr = str.c_str();
Note that it returns a const char *
; you aren't allowed to change the C-style string returned by c_str()
. If you want to process it you'll have to copy it first:
std::string str = "string";
char *cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());
// do stuff
delete [] cstr;
Or in modern C++:
std::vector<char> cstr(str.c_str(), str.c_str() + str.size() + 1);
conversion between char* and std::string and const char*
std::string A = "hello"; //< assignment from char* to string
const char* const B = A.c_str(); //< call c_str() method to access the C string
std::string C = B; //< assignment works just fine (with allocation though!)
printf("%s", C.c_str()); //< pass to printf via %s & c_str() method
C++ conversion from unsigned char to std::string
To append a character you have to use the following overloaded method append
basic_string& append(size_type n, charT c);
For example
stroutput.append(1, characters[0]);
stroutput.append(1, characters[1]);
Otherwise use method push_back
or the operator +=
. For example
stroutput += characters[0];
stroutput += characters[1];
If you want to append the whole array or its part then you can write
stroutput.append( reinterpret_cast<char *>( characters ), sizeof( characters ) );
stroutput.append( reinterpret_cast<char *>( characters ), n );
where n is the number of characters of the array to append.
Converting const char to std::string for title
Make your argument std::string
. std::string
has a constructor that takes a const char*
so it should not be a problem.
Converting a const char * to std::string
std::string
has a constructor fromconst char *
.This means that it is legal to write:
const char* str="hello";
std::string s = str;
Preferred conversion from char (not char*) to std::string
std::string
has a constructor that takes a number and a character. The character will repeat for the given number of times. Thus, you should use:
std::string str(1, ch);
Convert char* to string C++
std::string str(buffer, buffer + length);
Or, if the string already exists:
str.assign(buffer, buffer + length);
Edit: I'm still not completely sure I understand the question. But if it's something like what JoshG is suggesting, that you want up to length
characters, or until a null terminator, whichever comes first, then you can use this:
std::string str(buffer, std::find(buffer, buffer + length, '\0'));
Related Topics
Boost::Flat_Map and Its Performance Compared to Map and Unordered_Map
Implementing Qt Project Through Cmake
Std::Shared_Ptr Initialization: Make_Shared<Foo>() VS Shared_Ptr<T>(New Foo)
Accessing Protected Members of Superclass in C++ with Templates
Why Do We Need to Use 'Int Main' and Not 'Void Main' in C++
Read Process Memory of a Process Does Not Return Everything
Slot Is Being Called Multiple Times Every Time a Signal Is Emitted
How Does Overloading of Const and Non-Const Functions Work
Convert a Char* to Std::String
Has Anyone Ever Had a Use for the _Counter_ Pre-Processor MACro
Template Function as a Template Argument
Details of Std::Make_Index_Sequence and Std::Index_Sequence
What Is an Opaque Value in C++