C++ 中的 scanf 和字符串
Scanf and strings in c++
我有一个非常简单的程序。
#include <stdio.h>
#include <string>
using namespace std;
struct scholar{
int number;
string fam;
int ocen;
};
int main(){
int len;
printf("vvedite n");
scanf("%d", &len);
scholar *barr= new scholar[len];
for(int i=0; i<len; i++){
printf("Nomer studenta ");
scanf("%d", &barr[i].number);
printf("nFamilia ");
scanf("%s", barr[i].fam);
printf("nOcenka");
scanf("%d", &barr[i].ocen);
}
delete [] bar;
但是在网上,我想输入家庭的地方,有一个警告:
warning: format specifies type 'char *' but the argument has type 'string'
(aka 'basic_string<char>') [-Wformat].
有什么建议如何解决吗?
你不能
scanf
std::string
,C函数不知道C++实现是什么。您可以使用std::getline
#include <string>
#include <iostream>
std::getline(std::cin, barr[i].fam);
另外,不要将 C 代码与 C++ 代码混合,应避免new
如果可能,请使用 scholar
向量。对于示例:
std::vector<scholar> barr;
'scanf' 是在 stdio.h 中定义的,它是一个 C 库而不是 C++ 库,所以你可以转换自动将"char*"键入为"字符串"。您可以使用其他输入 IO 流函数,而不是"scanf"。