2011-12-09 28 views
0

我有以下代码将字符串转换成char:C++转换字符串为char不工作

string tempLine = dataLine[studentIndex]; 
char str = tempLine.c_str(); 

但这行返回一个错误:“类型的值‘恒定的char *’不能使用。初始化类型为 “字符” 的实体

我怎样才能解决这个问题?

回答

2

应该是:

const char *str = tempLine.c_str(); 

请注意,您不应该更改字符串的内容。一般来说,它不是使用C++字符串的好方法。如果您确实需要将C++字符串完全转换为C字符串 - 分配内存并使用strcpy来复制数据,请不要直接使用C++字符串缓冲区。

编辑为您的要求在评论:看看here C++学习资源。

+0

我知道const是什么,但str之前的“*”是什么? –

+0

@Ahoura - '*'表示**指针**。 'char'是单个字符,你正在处理一个字符串。所以你需要一个指向一系列字符的指针,而不是一个字符。如果你不知道'*'是什么意思,我相信你不应该做你正在做的事情。 – littleadv

+3

@AhouraGhotbi如果你的问题真的是'*'的意思,那么现在就停下来,开始写一本好的C++书。 –

1

您不能转换const char*,这是std::string::c_str()回报,以char。更改:

char str = tempLine.c_str(); 

到:

const char* str = tempLine.c_str(); 

注意,这并不在tempLine字符复制到strstr只是指tempLine的字符。