如何在C ++中打印字符串


74

我试过了,但是没用。

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

1
“没有用”-为什么不向我们显示错误或什么没用?(即使在这种情况下很明显-但是您可能也由于不导入std名称空间而出现编译器错误)
ThiefMaster 2011年

Answers:


129
#include <iostream>
std::cout << someString << "\n";

要么

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

5
我总是喜欢以前的版本。
萨拉·曼彻达

1
它工作得更好:std :: cout << someString <<“ \ n”;
ChaosPredictor

2
为什么C如此烦人和复杂...顺便说一句
Elias

21

您需要访问基础缓冲区:

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

或更好地使用cout << someString << endl;(您需要#include <iostream>使用cout

另外,您可能想std使用using namespace std;或加上stringcout加上前缀std::


10

您需要#include<string>使用stringAND#include<iostream>才能使用cincout。(我在阅读答案时没有得到)。这是一些有效的代码:

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

int main()
{
    string name;
    cin >> name;
    string message("hi");
    cout << name << message;
    return 0;
}

6

您不能在参数中使用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())


-1

使用字符串时,最好的打印方式是:

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

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


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


2
根本不是真的。这里最大的缺陷是明显的安全漏洞(缓冲区溢出!),但还有其他缺陷。
Lightness Races in Orbit

yupp,那是一个严重的问题。Thanx
Akash sharma
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.