报错Cannot pass objects of non-trivially-copyable type std::string {aka class std::basic_string<char>}

Question

报错提示
在这里插入图片描述
**[Error] cannot pass objects of non-trivially-copyable type 'std::string {aka class std::basic_string**
说明不可以使用printf输出string类型的字符串。

Solve

1. 方法1

使用cout << str

2. 方法2

在c++中直接利用printf(“%s”,s) 是不允许的,因此c++中提供了一个函数c_str()对字符串进行转换,再利用%s 输出。
该函数是 string 类函数中 的一个成员函数,此函数的作用就是将C++的string转化为C的字符串(char *)数组,即生成一个const char *指针,指向字符串的首地,其指针指向的内容与string 类型的字符串一摸一样。

string s="abcdefg";
printf("%s", s.c_str());

你可能感兴趣的:(Error,python,c++,ERROR)