C++

2011-03-16 10 views
37

'da bir dize nasıl yazdırılır Bunu denedim, ancak çalışmadı.C++

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

"Çalışılmadı" - neden bize bir hata göstermiyor veya tam olarak çalışmadı? (Bu durumda oldukça belirgin olsa da - 'std' ad alanını almadığınız için bir derleyici hatası da olabilir) – ThiefMaster

+0

Kopyala: http://stackoverflow.com/questions/3634766/c-printf-on -strings-prints-gibberish –

cevap

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

veya printf() kullanmak isterseniz, ayrıca isteyebilirsiniz

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

Her zaman eski sürümü tercih ederim. –

+0

daha iyi çalışıyor: std :: cout << someString << "\ n"; – ChaosPredictor

19

Alttaki tampon erişmek gerekir:

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

Ya da daha kullanım cout << someString << endl;using namespace std; kullanılarak std ad alanı almak için Ek isteyebileceğiniz

(eğer cout kullanmak #include <iostream> gerekir) veya ve cout öneklerinin std:: ile birlikte.

1

:

#include <stdio.h> 
+0

'#include ' (** C++ dilinde bir dize nasıl yazdırılır?) – hansmaad

3

Bir std "printf" diyemezsin :: parametrede dize. "% s", C stili dizgi için tasarlanmış: char * veya char []. Eğer kesinlikle printf kullanmak istiyorsanız

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

, size bir ip karakter * temsilini verecek "c_str()" metodu kullanabilirsiniz: Böyle yapabilirsiniz C++ .

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

Eğer #include<string> VE #include<iostream> (Cevapları okuduğumda alamadım) gerekir. İşte çalışan bir kod:

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

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