如何将const char*转换为字符串,然后再转换回char* ?
How can I convert const char* to string and then back to char*?
我刚开始学习c++,很难理解const char*
。我试图将该方法中的输入转换为string
,然后更改字符串以添加我想要的连字符,并最终将该字符串转换回char*
返回。到目前为止,当我尝试这个时,它给了我一个总线错误10。
char* getHyphen(const char* input){
string vowels [12] = {"A","E","I","O","U","Y","a","e","i","o","u","y"};
//convert char* to string
string a;
int i = 0;
while(input != ' '){
a += input[i];
input++;
i++;
}
//convert a string to char*
return NULL;
}
A: std::string
类有一个接受char const*
的构造函数,所以您只需创建一个实例来进行转换。
B: std::string
的实例有一个c_str()
成员函数,它返回一个char const*
,你可以用它转换回char const*
。
auto my_cstr = "Hello"; // A
std::string s(my_cstr); // A
// ... modify 's' ...
auto back_to_cstr = s.c_str(); // B
首先,您不需要所有的代码来从输入构造std::string
。你可以使用:
string a(input);
要返回一个新的char*
,您可以使用:
return strdup(a.c_str()); // strdup is a non-standard function but it
// can be easily implemented if necessary.
确保释放返回值。
最好只是返回一个std::string
,这样你的函数的用户就不必担心内存分配/释放。
std::string getHyphen(const char* input){
不要使用char*
。使用std::string
,就像这里所有其他人告诉你的那样。这将消除所有这样的问题。
然而,为了完整起见,因为你想了解背景,让我们分析一下发生了什么。
while(input != ' '){
你的意思可能是:
while(*input != ' ') {
你的代码比较input
指针本身和