2011-03-16 70 views
37

我試過了,但沒有奏效。如何在C++中打印一個字符串

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

「沒有工作」 - 爲什麼不告訴我們一個錯誤或什麼不工作? (儘管在這種情況下它很明顯 - 但是你也可能有編譯器錯誤,因爲你不會導入'std'命名空間) – ThiefMaster 2011-03-16 07:32:46

+0

重複:http://stackoverflow.com/questions/3634766/c-printf-on -strings-prints-gibberish – 2011-03-16 13:58:45

回答

68
#include <iostream> 
cout << someString << "\n"; 

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

我總是喜歡前版本。 – 2011-03-16 07:34:58

+0

它更好用:std :: cout << someString <<「\ n」; – ChaosPredictor 2017-06-26 15:41:56

19

您需要訪問底層緩衝區:

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

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

此外,您可能要導入使用using namespace std;std命名空間或者前綴stringcoutstd::

1

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

#include <stdio.h> 
+0

'#include '(如何在** C++ **中打印字符串) – hansmaad 2011-03-16 09:56:56

3

不能稱之爲 「printf」 上有一個std ::字符串參數。 「%s」設計用於C風格的字符串:char *或char []。 在C++中,你可以做這樣的:

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

如果絕對想用printf,你可以使用該給你的字符串的一個char *表示的「c_str()」方法。

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

你需要#include<string>#include<iostream>(我沒有得到它,當我讀到的答案)。這裏有一些代碼可以工作:

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

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