2011-03-16 27 views
37

Intenté esto, pero no funcionó.Cómo imprimir una cadena en C++

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

"No funcionó" - ¿por qué no nos muestra un error o qué exactamente no funcionó? (Aunque es bastante obvio en ese caso, pero es posible que también tenga un error de compilación ya que no importa el espacio de nombres 'std') – ThiefMaster

+0

Duplicado: http://stackoverflow.com/questions/3634766/c-printf-on -strings-prints-galimatías –

Respuesta

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

o

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

Yo siempre preferiría la versión anterior. –

+0

funciona mejor: std :: cout << someString << "\ n"; – ChaosPredictor

19

necesita acceder a la memoria intermedia subyacente:

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

O mejor uso cout << someString << endl; (es necesario #include <iostream> utilizar cout)

Adicionalmente es posible que desee importar el espacio de nombres std usando using namespace std; o prefijo ambos string y cout con std::.

1

Si desea utilizar printf(), es posible que desee también:

#include <stdio.h> 
+0

'#include ' (Cómo imprimir una cadena en ** C++ **) – hansmaad

3

No se puede llamar "printf" con un std :: cadena en el parámetro. El "% s" está diseñado para una cadena de estilo C: char * o char []. En C++ se puede hacer así:

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

Si absolutamente desea utilizar printf, puede utilizar el método "() c_str" que dan una representación char * de la cadena.

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

necesita #include<string> Y #include<iostream> (yo no entiendo al leer las respuestas). Aquí hay un código que funciona:

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

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