我的代码:
#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*)’
但是我认为我的参数错误的方式或其他东西。
任何人都可以帮忙解决问题吗?
答案 0 :(得分:3)
有两个getline函数在c ++中使用分隔符。
一个是ifstream:
istream& getline (char* s, streamsize n, char delim);
另一个是字符串:
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();
}
答案 1 :(得分:2)
ofstream是输出文件流。你需要一个ifstream。
答案 2 :(得分:1)
答案 3 :(得分:1)
ofstream
是输出流,因此它没有任何输入方法。您可能需要ifstream
:
void function() {
ifstream inputFile("somefilename");
char buf[SOME_SIZE];
inputFile.getline (buf, sizeof buf, ',');
}