【发布时间】:2021-12-24 02:47:18
【问题描述】:
我正在做一个项目,我被困了一段时间。
我必须将 char 数组传递给“write”函数。我尝试使用 https://www.techiedelight.com/convert-std-string-char-cpp/ 将“data”curenty 字符串转换为 char 数组,但我只得到错误
error: request for member ‘c_str’ in ‘data’, which is of pointer type ‘const string*’ {aka ‘const std::__cxx11::basic_string<char>*’} (maybe you meant to use ‘->’ ?)
char* c[] = const_cast<char*>(data.c_str());
void LCD::print(const std::string* data)
{
for (int i = 0; i < strlen(data); i++)
write(data[i]);
}
【问题讨论】:
-
std::string::c_str()是一个东西。它返回一个以 null 结尾的char*。std::string::data()返回一个非空终止的char* -
变量
data是一个指向字符串对象的指针。如果它是单个字符串对象,那么您应该通过 reference 而不是使用指针来传递它。如const std::string& data。否则,您需要先取消对指针的引用,然后才能使用字符串对象(如(*data)[i]或data->length())。 -
另外
strlen是一个C 空终止字符数组函数,它不适用于std::string(指针或对象)。 -
总而言之,您可能需要退后一两步,重新了解 C++ 的一些基础知识。
-
@AndreasDM 另一方面,由于 C++11,所有由
std::string包裹的字符串都必须以空字符结尾,这意味着data()必须返回以空字符结尾的字符串。