convert a char to a string in C++
实现方式
参考文档: https://www.techiedelight.com/convert-char-to-string-cpp/
Using std::string constructor
A simple solution is to use the string class fill constructor string (size_t n, char c); which fills the string with n copies of character c.
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using string class fill constructor
std::string s(1, c);
std::cout << s << std::endl;
return 0;
}
Using std::stringstream function
Another good alternative is to use a string stream to convert between strings and other numerical types. The idea is to insert the given character into a stream and then write the contents of its buffer to the std::string.
#include <iostream>
#include <string>
#include <sstream>
int main()
{
char c = 'A';
// using stringstream
std::string s;
std::stringstream ss;
ss << c;
ss >> s; // or, use `s = ss.str()`
std::cout << s << std::endl;
return 0;
}
Using std::string::push_back function
Another commonly used solution is to use the push_back() function, which is overloaded for chars and appends a character to the string’s end.
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using string::push_back
std::string s;
s.push_back(c);
std::cout << s << std::endl;
return 0;
}
Using std::string::operator+=
string& operator+= (char c);
The string +=operator is overloaded for chars. We can use it to append a character at the end of the string, as shown below:
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using `std::string::operator+=`
std::string s;
s += c;
std::cout << s << std::endl;
return 0;
}
Using std::string::operator=
string& operator= (char c);
Similar to the +=operator, the =operator is also overloaded for chars. We can use it to replace the contents of a string with a single char.
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using `std::string::operator=`
std::string s;
s = c;
std::cout << s << std::endl;
return 0;
}
Using std::string::append function
string& append (size_t n, char c);
We can also use the append() function to append n copies of character c, as demonstrated below:
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using `std::string::append`
std::string s;
s.append(1, c);
std::cout << s << std::endl;
return 0;
}
Using std::string::assign function
string& assign (size_t n, char c);
The assign() function replaces the current value of the string with n copies of character c. We can use it, as shown below:
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using `std::string::assign`
std::string s;
s.assign(1, c);
std::cout << s << std::endl;
return 0;
}
Using std::string::insert function
string& insert (size_t pos, size_t n, char c);
We can use insert() that inserts n copies of character c beginning at character pos.
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using `std::string::insert`
std::string s;
s.insert(0, 1, c);
std::cout << s << std::endl;
return 0;
}
Using std::string::replace function
string& replace (size_t pos, size_t len, size_t n, char c);
The replace() function replaces the portion of the string (len characters beginning at character pos) by n copies of character c. We can use it, as shown below:
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// using `std::string::replace`
std::string s;
s.replace(0, 1, 1, c);
std::cout << s << std::endl;
return 0;
}
Converting char to C-string
Finally, we can also convert the char to a C-string and then convert the C-string to a std::string using the fill constructor or std::string::append or std::string::assign.
#include <iostream>
#include <string>
int main()
{
char c = 'A';
// converting char to C-string
const char* str = &c;
// using `std::string` fill constructor
std::string s(str, 1);
std::cout << s << std::endl;
// using `std::string::append`
std::string S;
S.append(str, 1);
std::cout << S << std::endl;
// using `std::string::assign`
S.assign(str, 1);
std::cout << S << std::endl;
return 0;
}