从Turbo c++ 3.0的文本文件中读取
Read from text file in Turbo C++ 3.0
第一篇。如果我错过了什么,或者如果你需要更多的信息,请告诉我。
好的,我在这里要做的是从Turbo c++ 3.0的文本文件中读取数据,然后输出这个文本。
这是我的代码(更新):
ifstream playerData("players.txt");
const int size = 100;
char* dataArray = new char[size];
while(!playerData.eof()){
for(int i=0; i<size; i++){
playerData>>dataArray[i];
if(dataArray[i]=='n'){
cout<<"n";
}
cout<<dataArray[i];
}
}
如果我在播放器。txt文件中有以下文本:
ABC - 7 minutes
DEF - 4 minutes
输出如下:
ABC-7minutesDEF-4minutes
我不知道&(dataArray[i])=="n"
应该是什么。在编译器错误消失之前,看起来您只是在猜测。这对任何语言都不是一个好的编码方式,更不用说c++了。
你所写的测试元素dataArray[i]
是否存在于与字面值数组"n"
相同的内存地址。他们当然不会,所以这个测试总是会失败。
如果你想比较一个字符,写if (dataArray[i] == 'n')
。然而,这仍然是一个错误,因为dataArray[i]
还没有被赋值。你应该把这行移动到之后,你读到dataArray[i]
。
- 缓冲区溢出,将
i<=size
更改为i < size
- 你无故使用
new
;用数组代替 - 没有检查
>>
操作是否成功。 -
while(!playerData.eof())
是一个错误;相反,你应该打破当>>
失败
而且,Turbo c++ 3.0是在第一个c++标准之前发布的,所以在c++中使用它不是一个好主意。总之:
- 从书中学习,而不是试错
- 得到一个现代的编译器(有很好的免费的)
您正在比较i
字符的地址与const literal "n"
的地址,这是无用的。要将字符与字符n
进行比较,您应该使用单引号:'n'
并删除&
操作符。
if (dataArray[i]=='n')
忘记Turbo c++,使用新的和现代的编译器
更新后
你应该尝试使用STL和托管容器,而不是你的指针和new/delete
。此外,通过.eof()
进行测试并不是一个好的做法,应该使用对象本身。要获得一行,您可以使用std::getline
函数。在标准的新编译器中重写代码:
ifstream playerData("players.txt");
while(playerData) {
string dataArray;
getline(playerData, dataArray);
cout << dataArray << 'n';
}
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入