文件处理(从文件输入) 我有一个简单的文本文件,其中有列名字、姓和昵称……我试图从C++程序中的文件中的每一行获取输入……然后出现了一个问题……我已经排除了几行的填充列……这是一个示例表: avinash kumar snu akash aks rohan ron 现在我用C++把列输入到人类对象的第一、最后和尼克字段中。 现在,当我输入第二行aks时,进入“最后一行”字段,第三行rohan进入“第一行”字段,ron进入“最后一行”字段……那么有谁能建议一种方法来解决这个问题……如果无法解决,我至少可以知道实际输入了多少列(表示列数)?

文件处理(从文件输入) 我有一个简单的文本文件,其中有列名字、姓和昵称……我试图从C++程序中的文件中的每一行获取输入……然后出现了一个问题……我已经排除了几行的填充列……这是一个示例表: avinash kumar snu akash aks rohan ron 现在我用C++把列输入到人类对象的第一、最后和尼克字段中。 现在,当我输入第二行aks时,进入“最后一行”字段,第三行rohan进入“第一行”字段,ron进入“最后一行”字段……那么有谁能建议一种方法来解决这个问题……如果无法解决,我至少可以知道实际输入了多少列(表示列数)?,c++,file-processing,C++,File Processing,正如Brian和Andrejs所评论的,您必须逐行解析文件。假设始终至少有一个名称,且不超过三个,则有7个可能性(0,其中没有名称): A、B、C、 A B 0, A 0摄氏度, 公元前0年 A 0 0, 0b0,, 0摄氏度 解析行并将名称保存在临时变量中。还保存行中每个名称的起始位置。若得到的名称少于3个,则可以根据行的最大长度,从逻辑上确定缺少哪些名称。希望这是有意义的,这不是很优雅的解决方案:)列的大小都是固定的吗?如果是这样,那么解决方案就很简单,如果不是这样,那么你就有一个真正的问题

正如Brian和Andrejs所评论的,您必须逐行解析文件。假设始终至少有一个名称,且不超过三个,则有7个可能性(0,其中没有名称):

A、B、C、

A B 0, A 0摄氏度, 公元前0年

A 0 0, 0b0,, 0摄氏度


解析行并将名称保存在临时变量中。还保存行中每个名称的起始位置。若得到的名称少于3个,则可以根据行的最大长度,从逻辑上确定缺少哪些名称。希望这是有意义的,这不是很优雅的解决方案:)

列的大小都是固定的吗?如果是这样,那么解决方案就很简单,如果不是这样,那么你就有一个真正的问题。@mark..no列有一个最大大小….但没有固定大小用空格分隔文件中的列?fgets trim tokenize save;对于一行上两个或两个以下的代币,人工智能应该会起到神奇的作用。@brian…是的,它们之间用白色分隔符隔开。请再次阅读您的问题:您确定名称不是从固定位置开始的吗?如果您可以假设,@jork….我可以在使用getline时使用两个定界字符吗?因为我不知道特定输入后面是“\n”(如果只有一列)还是“”(如果有两个或更多列)…那么是否有任何函数允许分隔符可以是“”或“\n”…您可以使用getline()()选择一个分隔符,但不能超过一个。我认为这并不重要,因为您将逐行(始终有一个“\n”分隔符)读入字符串,然后您将生成子字符串。也许你应该使用Strtokk()@ @ Avimasu来标记字符串ToKeIZing子串,你可以用C++来标记问题,所以如果你想用C++方式,使用<代码>字符串< /C> >它是成员函数,比如String()。