printf() 和 cin 交互

printf() and cin interaction

我想通过 cin>> 获取字符串,然后我想通过 printf 打印它。但是 printf 给出了一些意想不到的结果。我该如何解决?

string *planet;
planet = new string;
cout << "Enter planet name:"<<endl;
cin >> *planet;                 //Saturn
cout<< *planet<<endl;           //Saturn
printf("Your planet is %s",planet);   //Your planet is аk

我现在,C那里没有字符串,而是char[]实现的。 printf 接受数组名称,这是它的第一个元素的地址,因此我给它一个指向字符串的指针,它是一个 char 数组,它的名称也是第一个元素的地址.所以一定是一样的。

与此相关,又出现了次要问题:字符串中的某个元素是数组,为什么我获取不到?

string *planet;
planet = new string;
cout << "Enter planet name:"<<endl;
cin >> *planet;
cout<< *planet<<endl;     //Helion
string str = {"Helion"};
cout<< str[2]<<endl;      //l
cout<< planet[2]<<endl;   //error Process returned -1073741819 (0xC0000005)

string不是数组,是一个class。不要像指针一样使用它。要获得 C 风格的字符串,请使用 c_str():

string planet;
cin >> planet;
printf("Your planet is %s",planet.c_str());
cout<< planet[2]<<endl;