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);

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());

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::.


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;
}

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())

3

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

#include <stdio.h>

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.