【发布时间】:2015-12-08 06:15:44
【问题描述】:
在 C++ 项目中,我一直在尝试使用数组来存储文本文件中的数据,以便稍后使用。我在初始化没有大小的数组时遇到了问题。这是我一直在做的一个基本示例:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
int i = 0;
ifstream usern;
string data;
string otherdata;
string *users = nullptr;
usern.open("users.txt");
while(usern >> otherdata)
i++;
users = new (nothrow) string[i];
for (int n = 0; usern >> data; n++)
{
users[n] = data;
}
usern.close();
return 0;
}
这是我拼凑起来的一个非常粗略的例子。基本上,我尝试从名为users.txt 的文本文件中读取项目并将它们存储在一个数组中。我在包含的示例中使用了指针(考虑到我对指针不太了解,这可能不是最好的主意)。当我运行这个程序时,无论文件中的数据如何,当我尝试通过包含cout << *(users + 1) 来测试这些值时,我都没有得到任何结果。它只是在窗口中留下一个空白行。我猜我的错误在于我对指针的使用或我如何在指针本身中分配值。我想知道是否有人可以指出我如何将正确的值放入数组的正确方向。谢谢!
【问题讨论】:
-
你能告诉我们文件的格式吗?例如是
.csv、.xml、.tsv还是每行一个用户等?? -
另外我建议使用 std::vector 这样的东西,因为它允许动态大小重新分配而无需您使用指针??
-
给定的文件是一个 .txt,由 3 个文本字符串组成,但理想情况下,字符串的数量可以更改并且仍然有效。此外,这是一项任务的一小部分,我们不允许在任何地方使用向量。如果是这样,我不会有任何问题,因为向量对我来说更有意义!
-
我会把它包含在你的问题中(作为编辑),否则几乎每个人都会告诉你使用向量:)
标签: c++ arrays pointers dynamic-allocation