0

我有一个非常简单的程序。

#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;

但是在网上,我想输入family的地方,有一个警告:

warning: format specifies type 'char *' but the argument has type 'string'
(aka 'basic_string<char>') [-Wformat].

任何建议如何解决它?

4

2 回答 2

1

你不能scanfstd::stringC 函数不知道 C++ 实现是什么。你可以使用std::getline

#include <string>
#include <iostream>

std::getline(std::cin, barr[i].fam);

此外,不要将 C 代码与 C++ 代码混合使用,new如果可能,应避免使用 vector ofscholar代替。样品:

std::vector<scholar> barr;
于 2013-10-14T00:41:48.993 回答
0

'scanf' 在 stdio.h 中定义,它是一个 C 库而不是 C++ 库,因此您可以自动将类型 'char*' 转换为 'string'。您可以使用其他输入 IO 流函数而不是“scanf”。

于 2013-10-14T00:50:52.813 回答