合并两个文本文件会产生奇怪的结果
Merging two text files gives wierd results
我需要通过将两个文本文件放在矢量数组中,然后将它们写入新的文本文件来合并它们。合并它们后。新文件包含额外的字符。
铁:
f1.txt ("text1")
f2.txt ("text2.")
f12.txt ("text1˙text2.˙W64")
缓冲区的内容:"文本 1 文本 2。W64"
这是代码:
int main(){
enum errorcode{FNF,FNC};
vector<char> buffer;
char ime[255];
cin>>ime;//first file
ifstream ud1(ime,ios::in);
if(ud1.is_open()){
while(!ud1.eof())buffer.push_back(ud1.get());
ud1.close();
}
else {cout<<"File not found.";return FNF;}
cin>>ime;//second file
ifstream ud2(ime,ios::in);
if(ud2.is_open()){
while(!ud2.eof())buffer.push_back(ud2.get());
ud2.close();
}
else {cout<<"File not found.";return FNF;}
cin>>ime;//new file
ofstream id(ime,ios::out);
if(id.is_open()){
for(int i=0;i<buffer.capacity();i++)id.put(buffer[i]);
id.close();
}
else {cout<<"File not created.";return FNC;}
return 0;
}
我想这是因为记事本或文件本身。你能告诉我原因吗?
您正在使用 矢量容量:返回当前为矢量分配的存储空间的大小,以元素表示。
必须使用矢量大小: 返回矢量中的元素数。这是矢量中保存的实际对象的数量,不一定等于其存储容量。
关于 ̇
请查看 istream::get 返回值:
返回值
第一个签名返回字符读取,如果流中没有可用字符,则返回文件结束值 (EOF)(请注意,在这种情况下,还会设置 failbit 标志)。
因此,您可以将循环更改为:
while(!ud1.eof()){
int tmpChar = ud1.get();
if( !ud1.eof() )
buffer.push_back(tmpChar);
}
相关文章:
- 使用 find 解析文件会给出不同文件的奇怪结果
- Boost program_options将多个配置文件解析结果存储到一个parsed_options中
- 如何从主.cpp中的cpp文件中获取功能结果?
- CSV文件之间的差异,使用getline()产生不同的结果
- 为什么这段代码(在 Matlab 的 MEX 文件中使用 OpenMP)给出不同的结果?
- 使用 BOOST property_tree / iostreams / 文件系统 / foreach - 结果出现链接
- 如何在EXECUTE_PROCESS中使用文件(GLOB_RECURSE)的结果?
- 按扩展名过滤搜索文件会返回太多结果
- 当与Windows和Linux下的Ifstream相反的二进制文件时,结果不同
- C 可执行文件从浏览器下载而不是显示结果
- 从文本文件中读取并使用 sizeof 结果计算整数的数量到 nan
- 如何指定创建文件函数获取未缓存的结果?
- 该程序应该创建一个带有结果的输出文件,但文件中没有任何内容
- VIM:执行复杂文件类型的脚本和显示结果
- 为什么在 2 个不同的 cpp 文件中定义内联全局函数会导致神奇的结果
- 如何在C 中为文本文件编写代码结果(在void函数之内)
- 如何将结果存储到文本文件中
- 多线程文件读取为每个线程生成相同的结果
- 获取命令行请求的结果并打开文件
- 试图将C 文件写入文件时获得错误的结果