Geen overeenkomende functie om te bellen voor “getline”

Ik ben nieuw bij C++ -programmering. In een zelfstudie zal de genoemde auteur “CIN” breken als het een ruimte in een tekenreeks leest. Als u wilt dat het programma in een hele reeksslijn met spaties leest, moet u de functie “Getline” gebruiken.

Ik kon het echter niet laten werken.

Hier zijn mijn codes:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string my_name;
    cout << "Please enter your name: ";
    getline(cin, my_name, "\n");
    cout << "My name is " << my_name << " .";
}

De IDE die ik gebruik is Xcode. Het foutbericht is “Geen overeenkomende functie om te bellen naar ‘Getline'”.

Ik heb gezocht naar vergelijkbare problemen, maar het lijkt mij geen van de oplossingen van toepassing op mijn probleem. Misschien mis ik wat kennis? Bedankt.


Antwoord 1, Autoriteit 100%

Wat je leraar zei is niet waar. cinZal niet “breken”. Het is gewoon die geformatteerde extractie in een std::stringis ontworpen om woord door Word te lezen. Dat is opzettelijk. Het is niet kapot.

Wat uw fout betreft, uw oproep naar std::getlineis kapot omdat het scheidingargument het verkeerde type heeft. '\n'is een charletterlijk; "\n"is een chararray letterlijke, helemaal niet wat u wilde.


Antwoord 2, Autoriteit 111%

De voltooid fout zou u vertellen waarom uw derde parameter van het verkeerde type is.

Het moet een tekentype zijn, geen null-beëindigde reeks tekens.

getline(cin, my_name, '\n');

Bewerken: En '\n'specifiekis het veronderstelde scheidingsteken in een andere vorm van getline:

getline(cin, my_name);

Antwoord 3

voeg dit regelwerk voor mij toe

#include <fstream>

Other episodes