So drucken Sie eine Zeichenfolge in C ++ [geschlossen]

73

Ich habe es versucht, aber es hat nicht funktioniert.

#include <string>
string someString("This is a string.");
printf("%s\n", someString);
Knoten Ninja
quelle
1
"Hat nicht funktioniert" - warum nicht einen Fehler anzeigen oder was genau hat nicht funktioniert? (Auch wenn es in diesem Fall ziemlich offensichtlich ist - aber Sie könnten auch einen Compilerfehler haben, da Sie den stdNamespace nicht importieren )
ThiefMaster

Antworten:

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

oder

printf("%s\n",someString.c_str());
GWW
quelle
5
Ich würde immer die frühere Version bevorzugen.
Saurabh Manchanda
1
es funktioniert besser: std :: cout << someString << "\ n";
ChaosPredictor
2
Warum ist C so nervig und kompliziert ... Danke übrigens
Elias
21

Sie müssen auf den zugrunde liegenden Puffer zugreifen:

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

Oder besser nutzen cout << someString << endl;(müssen Sie #include <iostream>verwenden cout)

Außerdem möchten Sie den stdNamespace möglicherweise mit using namespace std;oder als Präfix sowohl stringals auch coutmit importieren std::.

DiebMaster
quelle
10

Sie müssen #include<string>verwenden stringund #include<iostream>zu verwenden , cinund cout. (Ich habe es nicht verstanden, als ich die Antworten gelesen habe). Hier ist ein Code, der funktioniert:

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

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

Sie können "printf" nicht mit einem std :: string im Parameter aufrufen. Das "% s" ist für eine Zeichenfolge im C-Stil ausgelegt: char * oder char []. In C ++ können Sie Folgendes tun:

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

Wenn Sie printf unbedingt verwenden möchten, können Sie die Methode "c_str ()" verwenden, die eine char * -Darstellung Ihrer Zeichenfolge liefert.

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

Wenn Sie verwenden printf()möchten, möchten Sie möglicherweise auch:

#include <stdio.h>
Perry Horwich
quelle
1
#include <cstdio>(Wie man einen String in C ++
druckt
-1

Wenn Sie eine Zeichenfolge verwenden, können Sie Ihre Nachricht am besten drucken:

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

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


Dies kann einfach die Arbeit erledigen, anstatt die von Ihnen gewählte Methode auszuführen.

Akash Sharma
quelle
2
Einfach nicht wahr. Der größte Fehler hier ist die grelle Sicherheitslücke (Pufferüberlauf!), Aber es gibt noch andere.
Leichtigkeitsrennen im Orbit
Yupp, das war ein ernstes Problem. Thanx
Akash Sharma