1. ホーム
  2. c++

[解決済み] "getline "のために呼び出すべきマッチング関数がない

2022-02-02 18:35:42

質問

c++のプログラミングは初めてです。チュートリアルの中で、著者が "cin" は文字列の中にスペースを読むと壊れると述べています。もし、プログラムにスペースを含む文字列の行全体を読み込ませたい場合は、関数 "getline"を使用する必要があります。

しかし、うまくいかなかった。

以下は私のコードです。

#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 << " .";
}

使用しているIDEはXcodeです。エラーメッセージは、"No matching function to call to 'getline'"です。

同じような問題を検索してみましたが、どの解決策も私の問題には当てはまらないようです。もしかしたら、私の知識が不足しているのでしょうか?ありがとうございました。

解決方法を教えてください。

先生が言ったことは嘘だ。 cin は、"break"になりません。あくまでも std::string は、単語単位で読み取るように設計されています。それは意図的なものです。壊れているわけではありません。

あなたのエラーについてですが、あなたの呼び出した std::getline が壊れているのは、引数のデリミターの型が間違っているためです。 '\n'char リテラルになります。 "\n"char の配列リテラルは、あなたが望んだものでは全くありません。