我们许多人遇到错误“无法将std ::字符串转换为char []或char *数据类型” 。
例子:
Input : string s = "geeksforgeeks" ;
Output : char s[] = { 'g', 'e', 'e', 'k', 's', 'f', 'o',
'r', 'g', 'e', 'e', 'k', 's' } ;
Input : string s = "coding" ;
Output : char s[] = { 'c', 'o', 'd', 'i', 'n', 'g' } ;
方法1
一种方法是将字符串的内容复制到char数组。这可以借助库cstring的c_str()和strcpy()函数来完成。
c_str()函数用于返回指向数组的指针,该数组包含以空终止的字符序列,该字符串表示字符串的当前值。
句法:
const char* c_str() const ;
如果抛出异常,则字符串中没有任何变化。但是,当我们需要查找或访问各个元素时,可以使用strcpy()函数将其复制到char数组中。复制后,我们可以像使用简单数组一样使用它。
采用的char数组的长度不应小于输入字符串的长度。
CPP
// CPP program to convert string
// to char array
#include
#include
using namespace std;
// driver code
int main()
{
// assigning value to string s
string s = "geeksforgeeks";
int n = s.length();
// declaring character array
char char_array[n + 1];
// copying the contents of the
// string to char array
strcpy(char_array, s.c_str());
for (int i = 0; i < n; i++)
cout << char_array[i];
return 0;
}
CPP
// CPP program to convert string
// to char array
#include
#include
using namespace std;
// driver code
int main()
{
// assigning value to string s
string s("geeksforgeeks");
// declaring character array : p
char p[s.length()];
int i;
for (i = 0; i < sizeof(p); i++) {
p[i] = s[i];
cout << p[i];
}
return 0;
}
C++14
// CPP program for the above approach
#include
#include
#include
using namespace std;
// Driver Code
int main()
{
char* char_arr;
string str_obj("GeeksForGeeks");
char_arr = &str_obj[0];
cout << char_arr;
return 0;
}
输出:
geeksforgeeks
方法2:
CPP
// CPP program to convert string
// to char array
#include
#include
using namespace std;
// driver code
int main()
{
// assigning value to string s
string s("geeksforgeeks");
// declaring character array : p
char p[s.length()];
int i;
for (i = 0; i < sizeof(p); i++) {
p[i] = s[i];
cout << p[i];
}
return 0;
}
输出:
geeksforgeeks
方法3:
这是最简单,最有效的广告。我们可以直接将字符串的第一个字符的地址分配给char的指针。除非您的逻辑需要该字符串的副本,否则这应该是首选方法。
C++ 14
// CPP program for the above approach
#include
#include
#include
using namespace std;
// Driver Code
int main()
{
char* char_arr;
string str_obj("GeeksForGeeks");
char_arr = &str_obj[0];
cout << char_arr;
return 0;
}
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。