我在文件处理上有2个问题。
#包括#include #包括void () {char string80;int len;std::cout<<“输入字符串";std::cin>>string;len=strlen( string );std::fstream文件;file.open("RO1.TXT",std::ios::out 000-std:ios:in);for(int i=0;i
没有创建文件的问题是,名称RO1.TXT是否已损坏?
2.如果我使用ifstream和ifstream构建,那么文件就会创建,但是会显示一个额外的字符代码。
#include<iostream>
#include<conio.h>
#include<fstream>
void main()
{std::ofstream file;
char string[80];
int len;
file.open("RO1.TXT");
std::cout<<"Enter a string ";
std::cin>>string;
len=strlen(string);
for(int i=0;i<len;i++)
file.put(string[i]);
file.close();
std::ifstream file1;
file1.open("RO1.TXT");
char ch;
while(file1)
{file1.get(ch);
std::cout<<ch;
}
file1.close();
getch();
}问题是正在显示额外的字符。
发布于 2013-11-25 16:49:59
从它读取时,您需要检查ifstream是否仍然有效;您读取并显示,但是如果流已经结束.试试这个:
std::ifstream file1;
file1.open("RO1.TXT");
char ch;
while(file1.good())
{
file1.get(ch);
if (file1.good())
std::cout<<ch;
}更新
这可能会帮助您解决第一个问题:
std::fstream doesn't create file
您必须从模式参数中删除std::fstream::in,或者按照上面的链接指定std::fstream::trunc
发布于 2013-11-25 16:46:20
最后一个字符会显示两次,因为在读取文件之前(即读取文件结束之前),您正在检查文件流错误。您需要在获得字符后检查错误。
发布于 2013-11-25 16:50:10
while (file1)
{
file1.get(ch);
std::cout<<ch;
}是错的
while (file1.get(ch))
{
std::cout<<ch;
}是对的。
您的版本是错误的,因为只有在尝试阅读和失败之后,file1才会变成假的。这就是为什么在文件末尾会出现重复字符的原因。您调用file.get的次数比文件中的字符多一次,但是由于没有在正确的位置检查错误,所以调用std::cout<<ch的次数也比文件中的字符多一次。
有时候,似乎世界上每一个程序员在他们刚开始的时候都犯了这个错误。
https://stackoverflow.com/questions/20198370
复制相似问题