C++读取输入输出Word文档格式.docx
- 文档编号:17619679
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:15
- 大小:80.67KB
C++读取输入输出Word文档格式.docx
《C++读取输入输出Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++读取输入输出Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
2[回车]3[回车]
输出:
5
用法2:
接受一个字符串,遇“空格”、“TAB”、“回车”都结束
chara[20];
a;
a<
jkljkljkl
jkljkljkljkl
//遇空格结束
jkljkl
2、cin.get()
cin.get(字符变量名)可以用来接收字符
charch;
ch=cin.get();
//或者cin.get(ch);
ch<
jljkljkl
j
cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
cin.get(a,20);
jkljkljkl
abcdeabcdeabcdeabcdeabcde(输入25个字符)
abcdeabcdeabcdeabcd
(接收19个字符+1个'
\0'
)
用法3:
cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.
这个我还不知道怎么用,知道的前辈请赐教;
3、cin.getline()
//接受一个字符串,可以接收空格并输出
charm[20];
cin.getline(m,5);
m<
jklj
接受5个字符到m中,其中最后一个为'
,所以只看到4个字符输出;
如果把5改成20:
jklffjlsjffjsdklf
//延伸:
//cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
//当第三个参数省略时,系统默认为'
//如果将例子中cin.getline()改为cin.getline(m,5,'
a'
);
当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:
#include<
string>
charm[3][20];
for(inti=0;
i<
3;
i++)
"
\n请输入第"
i+1<
个字符串:
cin.getline(m[i],20);
for(intj=0;
j<
j++)
输出m["
]的值:
m[j]<
请输入第1个字符串:
kskr1
请输入第2个字符串:
kskr2
请输入第3个字符串:
kskr3
输出m[0]的值:
输出m[1]的值:
输出m[2]的值:
4、getline()
//接受一个字符串,可以接收空格并输出,需包含“#include<
”
stringstr;
getline(cin,str);
str<
jkljfksldfjjklsjfl
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
5、gets()
gets(m);
//不能写成m=gets();
类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:
gets(m[i]);
自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;
这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>
也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“kskrjkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;
再如“kskr1[回车]kskr2[回车]”,那么则接收“kskr,1,kskr”;
这不是我们所要的结果!
而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;
6、getchar()
//接受一个字符,需包含“#include<
ch=getchar();
//不能写成getchar(ch);
//getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;
有什么建议可以一起探讨,我的email是kskr@
C++简单读写文本文件、统计文件的行数、读取文件数据到数组
fstream提供了三个类,用来实现c++对文件的操作。
(文件的创建、读、写)。
ifstream--从已有的文件读
ofstream--向文件写内容
fstream-打开文件供读写
文件打开模式:
ios:
:
in
读
out
写
app
从文件末尾开始写
binary
二进制模式
nocreate
打开一个文件时,如果文件不存在,不创建文件。
noreplace
打开一个文件时,如果文件不存在,创建该文件
trunc
打开一个文件,然后清空内容
ate
打开一个文件时,将位置移动到文件尾
文件指针位置在c++中的用法:
beg
文件头
end
文件尾
cur
当前位置
例子:
file.seekg(0,ios:
beg);
//让文件指针定位到文件开头
end);
//让文件指针定位到文件末尾
file.seekg(10,ios:
cur);
//让文件指针从当前位置向文件末方向移动10个字节
file.seekg(-10,ios:
//让文件指针从当前位置向文件开始方向移动10个字节
//让文件指针定位到离文件开头10个字节的位置
常用的错误判断方法:
good()
如果文件打开成功
bad()
打开文件时发生错误
eof()
到达文件尾
实例:
一、写入文件
fstream>
voidmain()
ofstreamin;
in.open("
com.txt"
ios:
trunc);
//ios:
trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建
inti;
chara='
;
for(i=1;
=26;
i++)//将26个数字及英文字母写入文件
if(i<
10)
{
in<
0"
\t"
\n"
a++;
}
else
in.close();
//关闭文件
打开com.txt,效果如下:
二、读取文件
上面仅仅是将文本写入文件,并没有读取出来。
以下为读取文件的一种方法:
将文件每行内容存储到字符串中,再输出字符串
charbuffer[256];
fstreamout;
out.open("
in);
的内容如下:
while(!
out.eof())
out.getline(buffer,256,'
\n'
//getline(char*,int,char)表示该行字符达到256个或遇到换行就结束
cout<
buffer<
out.close();
cin.get();
//cin.get()是用来读取回车键的,如果没这一行,输出的结果一闪就消失了
逐个字符的读取文件:
fstreamin;
charc;
comn.txt"
in.eof())
in>
c;
这个方法读取的文件,所有字符都一起显示,不会分行。
这里字母z显示两次,是正常的,因为在输出文件最后一个字母z之后,又输出了一次(可以仔细考虑程序代码)。
读取文件某一行内容:
intCountLines(char*filename)
ifstreamReadFile;
intn=0;
stringtmp;
ReadFile.open(filename,ios:
//ios:
in表示以只读的方式读取文件
if(ReadFile.fail())//文件打开失败:
返回0
return0;
else//文件存在
while(getline(ReadFile,tmp))
n++;
returnn;
ReadFile.close();
stringReadLine(char*filename,intline)
intlines,i=0;
stringtemp;
fstreamfile;
file.open(filename,ios:
lines=CountLines(filename);
if(line<
=0)
return"
Error1:
行数错误,不能为0或负数。
if(file.fail())
Error2:
文件不存在。
if(line>
lines)
Error3:
行数超出文件长度。
while(getline(file,temp)&
&
line-1)
i++;
file.close();
returntemp;
intl;
charfilename[256];
请输入文件名:
filename;
\n请输入要读取的行数:
l;
ReadLine(filename,l);
很显然,根据以上程序,利用循环,可以逐行读取整个文件内容。
三、统计文件的行数
charline[512];
ReadFile.eof())
ReadFile.getline(line,512,'
comn.txt的行数为:
"
CountLines("
)<
以上程序的设计思路没有问题,但在实际操作的时候会发现统计出的行数与实际不符,原因在于ReadFile.getline(line,512,'
)这一句:
当一行字符超过512或遇到回车之后,行数自动加1.如果换行符在新的一行,返回的结果会比实际多1;
如果不在新的一行,返回结果与实际相符。
可以修改如下:
while(getline(ReadFile,temp))
四、读取文件数据到数组
intCountLines(char*filename)//获取文件的行数
else//文件存在,返回文件行数
while(getline(ReadFile,temp))
voidmain()
{
ifstreamfile;
intLINES;
charfilename[512];
请输入要打开的文件名:
文件不存在."
LINES=CountLines(filename);
int*tc=newint[LINES];
char*t=newchar[LINES];
inti=0;
file.eof())//读取数据到数组
file>
tc[i];
t[i];
i++;
}
//关闭文件
for(i=0;
LINES;
i++)//输出数组内容
tc[i]<
t[i]<
来自:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 读取 输入输出