【问题标题】:How to use printf for strings? [duplicate]如何将 printf 用于字符串? [复制]
【发布时间】:2014-03-23 13:03:17
【问题描述】:

这是我的代码

string name;
cout <<"\n   Enter Your name : \n";
cin >> name;
printf("%s" , name);

由于一些奇怪的原因,代码块在此崩溃

为什么?

我该如何解决?

谢谢

【问题讨论】:

  • 不要将std::coutprintf 混用。两者都是缓冲的,但使用 不同 缓冲区,这可能会使您的输出意外。
  • 只要您没有调用ios::sync_with_stdio(false),混合C++ 风格和C 风格I/O 是完全明确的。不过,这可能是一种糟糕的风格。

标签: c++


【解决方案1】:

如果您需要std::string 传递给接受/使用C 样式字符串(const char *) 作为输入的函数,请使用.c_str()。它返回一个const char *

这是您在需要使用现有库、系统调用等时应该执行的操作。对于您自己的代码,通常最好找到一种更 C++ 的方式来执行此操作。

在这种情况下:

std::cout << name << std::endl;

【讨论】:

    【解决方案2】:

    你应该编译所有警告(例如g++ -Wall)。你会得到一个有用的警告。你想像这样使用c_str

    printf("%s", name.c_str());
    

    顺便说一句,为什么要使用printf,为什么你会忘记printf 格式字符串末尾的\n? (或使用fflush

    更好的代码:

    cout << name << endl;
    

    【讨论】:

    • 谢谢!我正在测试 printf ,这只是我想要制作基于文本的 rpg 的一小部分代码,我觉得如果没有 cout 中使用的所有“,printf 会占用更少的空间
    猜你喜欢
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2023-04-01
    • 2011-07-10
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多