关于读取txt文件的问题?

fipamw 2003-06-02 09:16:11
比如有这样一个txt文件:
(1)程序测试1程序测试1
A.答案A B.答案B C.答案C D.答案D
(2)程序测试22程序测试
A.答案A B.答案B C.答案C D.答案D

也就是一张考卷,我的目的是要识别这张考卷,碰到(1)或(2)....的时候就把题目存到一个数组中,碰到A. B. C. D.的时候就分别把选项存到另一个数组中去。
具体应该怎么做呀,大虾可以指点一下吗?
最好给个例子,谢谢

...全文
39 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangzhb2003 2003-06-03
  • 打赏
  • 举报
回复
up
lshadow 2003-06-02
  • 打赏
  • 举报
回复
可是既然试卷是已经存在的,那么标准就由不得自己定吧?只有你自己分析试题和答案的规律
escout 2003-06-02
  • 打赏
  • 举报
回复
可以自己定一个标准:
每道试题和答案都占整行,同时试题和答案中间间隔一行。每个答案A、B、C、D中间用空格隔开。这样就可以分析了。对试题的识别不用(1)、(2)等,而是按照一道试题一道答案的分析,第一次遇到空行是试题结束,再一次遇到空行是答案结束;这样在进行下一道题。而对答案,可以这样:
CString str,strA,strB,strC,strD;
infile.ReadString(&str);
strA=str.Left(str.Find(' '));
str=str.Mid(str.Find(' '));
str.TrimLeft();
strB=str.Left(str.Find(' '));
str=str.Mid(str.Find(' '));
str.TrimLeft();
........
这只是一个小小的建议,其实你可以定一个更详细的同时又让老师很好操作的标准。否则,对一般的试卷分析很复杂,例外太多。
fipamw 2003-06-02
  • 打赏
  • 举报
回复
我知道这样肯定会出现一些问题的。我是在做一个试卷生成系统,如果题库是一题一题的导入的话,老师说这样太麻烦了。以是我就想可不可以一次导入一套试卷,然后由程序自动识别上面的题目,然后存入各自的数组中。所上上述所出现的种种异常情况,我都可以在导入试卷的时候就把这些问题屏蔽掉了。这样做虽然不是十全十美,但是比起一题一题的导入,那肯定是方便多了呀。
lshadow 2003-06-02
  • 打赏
  • 举报
回复
(1)在字符串"(1)A.B.C.D."中存在:
A."(3)" B."D." C."(4)" D."A."

那你不是要疯了?!劝你考虑别的形式或者办法
lshadow 2003-06-02
  • 打赏
  • 举报
回复
难办,如果不是一行呢?
如果这样呢:

(1)题目(2)的意思是
A.答案A. B.答案B. C.答案C. D.答案D.

你又怎么分析?
fipamw 2003-06-02
  • 打赏
  • 举报
回复
答案要存到四个数组中,我的目的是导入一套试卷,只要把试卷导入进程序,程序就可以自动的识别试卷上的所有题目.并把选择题目,选择题选项,填空题等题型分别存到数组中。我的想法是先取得这个txt文件的长度,然后用一个指针指向文件,如果碰到(1)或(2)....的时候就把后面的存在数组中,如果碰到A. B. C. D. 就分别把这四个选项存到四个数组中,这样做可不可以呀,或都哪位大虾有更好的方法呀,可不可以举个例子呀,谢谢了
Damachli 2003-06-02
  • 打赏
  • 举报
回复
对于这类文件,如果要区分题目和答案是又一定的难度的。因为试题前的“(1)···”和答案里的“A、B、C、D”并不是试题和答案的唯一标识,所以要解决这类问题必须使试题和答案有唯一标识。只有标识唯一才能从字符串中把试题和答案、答案和答案区分开来。
解决标识问题后,便是利用你最熟悉的方式存放字符串数组。
simahao 2003-06-02
  • 打赏
  • 举报
回复
同意 common_man
common_man 2003-06-02
  • 打赏
  • 举报
回复
答案是存到四个数组中还是存到一个数组中?
FAICHEN 2003-06-02
  • 打赏
  • 举报
回复
你的txt做成ini会不会好点呢?
triggerd 2003-06-02
  • 打赏
  • 举报
回复
同意 common_man
http://expert.csdn.net/Expert/topic/1862/1862197.xml?temp=.2205316
common_man 2003-06-02
  • 打赏
  • 举报
回复
CStdioFile filein;
CStringArray strarrsubjects;
filein.Open(....);
CString str;
while( filein.ReadString( str ) )
{
if ( (str.GetAt( 0 ) == '(') && (str.GetAt( 2 ) == ')') )
{
strarrsubjects.Add( str.Right( str.GetLenghth() - 3 ) );
.....

}
else if ( ....)
{

}
}
common_man 2003-06-02
  • 打赏
  • 举报
回复
可以用CStdioFile来做
一行一行的读取,再来判断

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧