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;
我想通过 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;