如何在 C++ 中打印字符串 [关闭]

Posted

技术标签:

【中文标题】如何在 C++ 中打印字符串 [关闭]【英文标题】:How to print a string in C++ [closed] 【发布时间】:2011-03-16 07:30:21 【问题描述】:

我试过了,但是没用。

#include <string>
string someString("This is a string.");
printf("%s\n", someString);

【问题讨论】:

“没用” - 为什么不向我们展示一个错误或者究竟是什么没用呢? (尽管在这种情况下很明显 - 但您可能还会遇到编译器错误,因为您没有导入 std 命名空间) 复制:***.com/questions/3634766/… 【参考方案1】:
#include <iostream>
std::cout << someString << "\n";

printf("%s\n",someString.c_str());

【讨论】:

我总是更喜欢以前的版本。 效果更好:std::cout 为什么 C 这么烦人又复杂……顺便说一句,谢谢【参考方案2】:

您需要访问底层缓冲区:

printf("%s\n", someString.c_str());

或者更好的使用cout &lt;&lt; someString &lt;&lt; endl;(你需要#include &lt;iostream&gt;才能使用cout

此外,您可能希望使用using namespace std; 导入std 命名空间,或在stringcout 前加上std::

【讨论】:

【参考方案3】:

您需要#include&lt;string&gt; 才能使用string#include&lt;iostream&gt; 才能使用cincout。 (当我阅读答案时我没有得到它)​​。这是一些有效的代码:

#include<string>
#include<iostream>
using namespace std;

int main()

    string name;
    cin >> name;
    string message("hi");
    cout << name << message;
    return 0;

【讨论】:

【参考方案4】:

您不能在参数中使用 std::string 调用“printf”。 "%s" 是为 C 风格的字符串设计的:char* 或 char []。 在 C++ 中你可以这样做:

#include <iostream>
std::cout << YourString << std::endl;

如果您绝对想要使用 printf,您可以使用“c_str()”方法,该方法为您的字符串提供 char* 表示。

printf("%s\n",YourString.c_str())

【讨论】:

【参考方案5】:

如果您想使用printf(),您可能还想:

#include <stdio.h>

【讨论】:

#include &lt;cstdio&gt;(如何在C++中打印字符串)【参考方案6】:

使用字符串时,打印消息的最佳方式是:

#include <iostream>
#include <string>
using namespace std;

int main()
  string newInput;
  getline(cin, newInput);
  cout<<newInput;
  return 0;

这可以简单地完成工作,而不是按照您采用的方法。

【讨论】:

完全不正确。这里最大的缺陷是明显的安全漏洞(缓冲区溢出!),但还有其他缺陷。 是的,这是个严重的问题。谢谢

以上是关于如何在 C++ 中打印字符串 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中使用 MPI 收集字符字符串并为每个进程打印它们?

如何在 C++ 中读取由空格分隔的字符串? [关闭]

在 C++ 中处理字符串时如何使用 memset? [关闭]

C++:如何检测向量中的重复项并打印一份?

如何在 C++ 中打印对象向量?

如何在 C++ 中的类中返回对象的字符串? [关闭]