2011-09-19 62 views
0

我有一个简单的文本文件列名,姓和昵称...我试图从C++程序中的文件中的每一行获得输入....然后出现了一个问题...我已经离开了填充几行的列....这里是一个示例表:文件处理(从文件输入)

avinash kumar snu 
akash   aks 
     rohan ron 

现在我先输入列进去,对象的最后和尼克场使用C++的人类... 现在,当我输入第二行aks进入'最后'字段和第三行rohan进入'第一'字段和ron进入'最后'字段....所以任何人都可以提出一种方法,我可以解决这个问题......如果它不能被修复,我可以至少知道有多少列实际上已输入(表示列数)?

+2

列是否都是固定大小?如果是这样,那么解决方案是微不足道的,如果不是这样,那么你手上就有一个真正的问题。 –

+0

@ mark ..no colums有一个最大尺寸....但没有固定的大小 – avinash

+0

您的文件中的列由空格分隔吗? –

回答

1

正如Brian和Andrejs所评论的,您必须逐行解析文件。假设总有至少一个名称,从来没有超过三个,那么你就有7个possibilites(0那里没有名称):

ABC,

AB 0, A 0 C, 0 BC,

A 0 0, 0 B 0, 0 0℃

解析线和保存在临时变量的名称。同时保存行内每个名字的起始位置。如果您的名字少于3个,您可以根据一条线的最大长度从逻辑上确定哪些名称缺失。希望这是有道理的,它不是很优雅的解决方案:)

+0

再次读你的问题:你确定名称不启动在固定职位上?如果你能假设这一点会容易得多。 – jrok

+0

不,他们不从固定位置开始 – avinash

+0

@jork ....我可以在使用getline时使用两个分隔字符,因为我不知道是否在特定输入'\ n'后面(如果只有一列存在)或' '如果有两个或更多... ...那么是否有任何功能允许像分隔字符一样''或'\ n'... – avinash