2

ファイルから読み取ろうとしていますが、C++ を実行したくありませんgetline()

次のエラーが表示されます。

C:\main.cpp:18: error: no matching function for call to 'getline(std::ofstream&, std::string&)'
          std::getline (file,line);
                                 ^

これはコードです:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <string>

using namespace std;

int main(){
    string line;

    std::ofstream file;
    file.open("test.txt");
    if (file.is_open())
     {
       while ( file.good() )
       {
         getline (file,line);
         cout << line << endl;
       }
       file.close();
     }


}
4

2 に答える 2

9

std::getlineは入力ストリーム クラス ( ) で使用するように設計されているため、次のクラスstd::basic_istreamを使用する必要があります。std::ifstream

std::ifstream file("test.txt");

さらに、while (file.good())ループ内の入力の条件として使用することは、一般的に悪い習慣です。代わりにこれを試してください:

while ( std::getline(file, line) )
{
    std::cout << line << std::endl;
}
于 2013-09-06T13:20:04.233 に答える
2

std::getline入力ストリームから文字を読み取り、文字列に配置します。あなたの場合、への最初の引数getlineはタイプofstreamです。ifstreamを使用する必要があります

std::ifstream file;
于 2013-09-06T13:25:46.113 に答える