基本输入/输出c++错误
Basic Input/Output C++ Error
我想要的是一个c++程序,它将读取txt文件,将每一行放入数组中,然后将副本打印到另一个txt文件中。这是我的代码…
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
string STRING ="";
string list[10000];
int i = 0;
ifstream infile;
infile.open ("C:/Users/Ryan/Desktop/data.txt");
ofstream myfile;
myfile.open ("C:/Users/Ryan/Desktop/data-2.txt");
while(!infile.eof()) // To get you all the lines.
{
getline(infile,STRING);
list[i]=STRING;
myfile<<list[i];
++i;
}
infile.close();
myfile.close();
return 0;
}
由于某种原因,虽然这样做,每隔一行给我一堆时髦的中国符号。这是我的data.txt…
BPC 20101206 V 0.13 0.13 0.13 0
BPC 20101207 V 0.13 0.13 0.13 6500
BPC 20101208 V 0.13 0.13 0.13 0
BPC 20101209 V 0.13 0.125 0.125 117000
BPC 20101210 V 0.125 0.125 0.125 0
BPC 20101213 V 0.125 0.125 0.125 0
BPC 20101214 V 0.13 0.13 0.13 5000
BPC 20101215 V 0.13 0.13 0.13 290
BPC 20101216 V 0.125 0.115 0.115 24000
这里是输出data-2.txt…
BPC 20101206 V 0.13 0.13 0.13 0
䈀倀䌀ऀ㈀ ㈀ 㜀ऀ嘀ऀ ⸀㌀ऀ ⸀㌀ऀ ⸀㌀ऀ㘀㔀 ഀ BPC 20101208 V 0.13 0.13 0.13 0
䈀倀䌀ऀ㈀ ㈀ 㤀ऀ嘀ऀ ⸀㌀ऀ ⸀㈀㔀ऀ ⸀㈀㔀ऀ㜀 ഀ BPC 20101210 V 0.125 0.125 0.125 0
䈀倀䌀ऀ㈀ ㈀㌀ऀ嘀ऀ ⸀㈀㔀ऀ ⸀㈀㔀ऀ ⸀㈀㔀ऀ ഀ BPC 20101214 V 0.13 0.13 0.13 5000
䈀倀䌀ऀ㈀ ㈀㔀ऀ嘀ऀ ⸀㌀ऀ ⸀㌀ऀ ⸀㌀ऀ㈀㤀 ഀ BPC 20101216 V 0.125 0.115 0.115 24000
任何想法?
为了解决您最初的问题,看起来您正在输出一些未格式化的字符(碰巧是中文)。我没有看到你插入新行(但似乎有新的行在输出),所以有一些东西从你的代码中缺失,你没有向我们展示。请剪切/粘贴真实代码。
- 实际代码是什么
- 如何从文件中生成输出(是否在编辑器中打开它)?
主要注意事项:
千万不要这样做:
while(!infile.eof())
在使用这一行之前,你应该阅读和测试它。
这可以在一行中完成,方法是将read放入条件中:
while(getline(infile,STRING))
{
list[i]=STRING;
myfile<<list[i];
++i;
}
其他注意事项:
- 格式化你的代码!!!!!!
- 不要使用所有大写标识符(这些通常是为宏保留的)。 不要使用数组。使用std::vector代替。
在一行中声明并打开文件
ifstream infile("C:/Users/Ryan/Desktop/data.txt");
不要测试EOF作为环路条件。
如果有其他问题,可能会导致无限循环。- 如果你没有检查读取工作,那么你重复上一行的处理。
不要手动关闭文件(让析构函数来做)
如果我没弄错的话,你的操作系统是Windows?
这些"中文"符号的原因是你的。txt文件是用Unicode编码的。在记事本中打开它,单击"另存为",并在"编码"下拉列表(在对话框底部的某个位置)中选择"ANSI",然后保存。这应该可以解决"中文"的问题:)
检查其他答案以修复代码中的问题。
当你写回数据时,你没有包括换行符,所以你不会创建一个重复的文件,如果这是你的意图。
似乎没有理由使用List[]数组,因为您无论如何都要直接将其写回来,相反,您可以使用
getline(infile,STRING);
myfile << STRING << endl;
btw STRING不是一个好的变量名,选择一个更有描述性的
这是一篇很好的文章,详细介绍了while(!eof)的替代方法…
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'