我的任务是编写一个从文本文件中读取一行的函数(重命名为.dat
,但它只包含文本),但由于以下几点,我没有解决方案的选项:
我正在使用Borland C++ Version 5.02
,不,我无法下载其他编译器,因为我的笔记本电脑上没有管理员权限,并且拥有所需密码的人在下周才能使用。
编译器不接受using namespace std
,也不接受getline()
,无论是否包含string
和iostream
。
我想找到一个解决方案,或者至少是最微小的方法,但我找不到。
所以我的问题是:如何在不使用getline()
的情况下从简单的文本文件中读取一行(cin.getline
有效,string
或fstream
无效?文本文件包含以下几行:
1234; 03年5月12日; 08:44:23; XY12-AB; A1-12;超时
2345; 12.05.03; 09:04:34; XY1-CD; A22-9;拒绝连接
;
之间的数字/字母需要存储在变量中,以便可以使用它们。
我没有要求你写我的代码,但我真的非常沮丧,我的导师也没有帮助。
活得长久繁荣, 我
答案 0 :(得分:0)
http://www.cplusplus.com/reference/string/string/getline/
如果你不能使用(你真的不应该)
using namespace std
然后使用:: operator
引用您的命名空间
例如:
std::string
现在尝试使用std ::编写自己的代码,如果仍然无法进行注释。
此外,除了std :: getline()之外还有很多其他选项来读取文本行。
答案 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;
}