string不能用scanf赋值

    在使用c/c++的时候,经常有一些地方会混淆,虽然有的可以兼容,但是有的还需要注意一下。

    今天遇到了一个不兼容的地方。

    直接上代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
int main() {
    string s;//改为char[100]后就可以了
    scanf("%s",s);
    printf("%s", s);
    return 0;
}

虽然可以输出,但是输出后,直接中断。

warning C4477: “scanf”: 格式字符串“%s”需要类型“char *”的参数,但可变参数 1 拥有了类型“std::string”

warning C4477: “printf”: 格式字符串“%s”需要类型“char *”的参数,但可变参数 1 拥有了类型“std::string”

C++博大精深

原文地址:https://www.cnblogs.com/kevin-lee123/p/6613187.html