从文件读取行:无法使用getline()

时间:2014-11-28 09:48:54

标签: c++ file

我的任务是编写一个从文本文件中读取一行的函数(重命名为.dat,但它只包含文本),但由于以下几点,我没有解决方案的选项:

  1. 我正在使用Borland C++ Version 5.02,不,我无法下载其他编译器,因为我的笔记本电脑上没有管理员权限,并且拥有所需密码的人在下周才能使用。

  2. 编译器不接受using namespace std,也不接受getline(),无论是否包含stringiostream

  3. 我想找到一个解决方案,或者至少是最微小的方法,但我找不到。

    所以我的问题是:如何在不使用getline()的情况下从简单的文本文件中读取一行(cin.getline有效,stringfstream无效?文本文件包含以下几行:

      

    1234; 03年5月12日; 08:44:23; XY12-AB; A1-12;超时

         

    2345; 12.05.03; 09:04:34; XY1-CD; A22-9;拒绝连接

    ;之间的数字/字母需要存储在变量中,以便可以使用它们。

    我没有要求你写我的代码,但我真的非常沮丧,我的导师也没有帮助。

    活得长久繁荣, 我

2 个答案:

答案 0 :(得分:0)

http://www.cplusplus.com/reference/string/string/getline/

如果你不能使用(你真的不应该)

using namespace std

然后使用:: operator
引用您的命名空间 例如:

std::string

现在尝试使用std ::编写自己的代码,如果仍然无法进行注释。

此外,除了std :: getline()之外还有很多其他选项来读取文本行。

参考:Read file line by line

答案 1 :(得分:0)

选项1:

尝试使用C的fgets()函数。

选项2: 你提到cin.getline()有效。你可以用输入文件freopen stdin,然后cin将指向提到的文件。之后,cin.getline()将从文件中读取:

下行:在freopen之后,您将无法接受用户的任何输入。

示例:请注意,尚未尝试使用g ++,但我想它也适用于Borland。

#include <iostream>
#include <stdio.h>

int main() {
        char buf[1000];
        freopen("somefile.dat", "r", stdin);
        while (cin.getline(buf, sizeof(buf)).good()) {
                // Now buf contains a line
                // Do something with it
        }
        return 0;
}