C++问题!我有一个包含以下信息的.txt文件:
james, watson
brittany,blake
roger,tra4@pos
jonathan, pote5
amber,Trisa123!
其中第一列是名称,第二列是网站用户的ID。
我需要读取此文件,然后将信息存储到2个数组中:name[] user_Id []你能帮我吗?我找到了将其保存到2D向量中的解决方案,但我更喜欢将其保存为数组,因为我需要将字符串值与另一个字符串进行比较(由uer接收,以检查她的名称/用户ID是否已在系统中)
我找到了将其保存到二维向量中的解决方案,但不适用于数组。
2条答案
按热度按时间mf98qq941#
我将向您展示您所要求的解决方案,但我很抱歉地通知您,解决方案的方法是错误的。原因有很多。首先,也是最重要的:在C++中,通常应该而不是不使用C-Style数组。
C-Style数组的大小是固定的,并且不是动态的。所以,你总是会得到一个 * 估计 * 最大大小的幻数。正确的方法是使用动态容器。对于你的解决方案,
std::vector
是最合适的。然后,为相关数据分离数组是一个非常糟糕的主意。正确的方法是将相关数据放在一个
struct
中,然后创建该结构体的一个std::vector
。否则,您将不得不始终维护和处理两个数组,甚至可能失去相关数据之间的同步。无论如何,我将首先向您展示一个解决方案以下你的想法:
但是我不建议继续这样做。下一个改进是使用一个
struct
,然后是一个struct数组。另外,我将去掉永远不应该使用的using namespace std;
。并且,我用通用初始化器初始化变量。发展历程:
现在我们将介绍一个面向对象的原理。数据和对该数据进行操作的方法将位于一个
class
或struct
中。因此,我们将在struct
中添加IO方法,并添加一个额外的struct
以容纳所有用户。此外,可以使用新的带有初始化器的if
-语句。当然还有std::vector
。请参阅:
rhfm7lfc2#
您也可以使用
cstring
库中的strtok()
将字符串拆分为标记:Split string in C/C++