15

std :: getlineを使用しようとしていますが、コンパイラからgetlineが識別されないと言われていますか?

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <fstream>
#include <cstdlib>

int main(){
    using namespace std;
    string line;
    ifstream ifile("test.in");
    if(ifile.is_open()){
        while(ifile.good()){
            getline(ifile,line);
        }
    }
}
4

3 に答える 3

33

std::getlinestringヘッダーで定義されています。

#include <string>

また、コードはcstring、、、、または;から何も使用していません。なぜこれらを含めるのが面倒ですか?cstdiocmathcstdlib

編集:cstringヘッダーとstringヘッダーに関する混乱を明確にするために、 Cランタイムライブラリのコンテンツを名前空間にcstringプルします。はC++標準ライブラリの一部であり、、(およびその特殊化と)などが含まれています。-2つの非常に異なるヘッダー。 string.hstdstringgetlinestd::basic_string<>std::stringstd::wstring

于 2011-04-25T17:35:21.383 に答える
3

ildjarnが指摘しているように、関数はで宣言されており、次の場所<string>でエラーが発生しなかったことに驚いています。

string line;

また、これ:

 while(ifile.good()){
      getline(ifile,line);
 }

読み取りループを作成する方法ではありません。現在のストリーム状態ではなく、読み取り操作の成功をテストする必要があります。あなたが欲しい:

while( getline(ifile,line) ) {
}
于 2011-04-25T17:39:58.523 に答える
0

getlineは文字列ライブラリから取得されるため、これが発生しています#include <string>#include <cstring>

于 2020-05-15T00:19:13.270 に答える