2

私のコード:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;
.
.
.

void function() {
    ofstream inputFile;
    .
    .
    .
    inputFile.getline (inputFile, inputField1, ",");
}

何らかの理由で、g ++を使用してこれをコンパイルすると、わかりません

error: ‘struct std::ofstream’ has no member named ‘getline’

また、補足として、エラーも発生します

error: invalid conversion from ‘void*’ to ‘char**’
error: cannot convert ‘std::string’ to ‘size_t*’ for argument ‘2’ to ‘ssize_t getline(char**, size_t*, FILE*)’

しかし、パラメーターを間違った方法で取得したと思います。

誰でも光を当てるのを助けることができますか?

4

4 に答える 4

3

C++ には区切り文字を取る getline 関数が 2 つあります。

1つはifstreamにあります:

istream& getline (char* s, streamsize n, char delim);

もう1つは文字列です:

istream& getline (istream& is, string& str, char delim);

あなたの例から、文字列からの使用を予期しているようです。

#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  ifstream inputFile;
  string inputField1;

  inputFile.open("hi.txt");

  getline(inputFile, inputField1, ',');

  cout << "String is " << inputField1 << endl;

  int field1;
  stringstream ss;
  ss << inputField1;
  ss >> field1;

  cout << "Integer is " << field1 << endl;

  inputFile.close();

}
于 2013-01-31T23:41:11.667 に答える
2

オフストリームは、出力ファイル ストリームです。ifstream が必要です。

于 2013-01-31T23:33:18.163 に答える
1

Anofstreamは出力ストリームであるため、getlineメソッドは意味がありません。多分あなたが必要ifstreamです。

于 2013-01-31T23:32:33.560 に答える
1

Anofstream出力ストリームであるため、入力メソッドはありません。あなたはおそらく欲しいifstream

void function() {
    ifstream inputFile("somefilename");
    char buf[SOME_SIZE];
    inputFile.getline (buf, sizeof buf, ',');
}
于 2013-01-31T23:32:43.260 に答える