-1

我正在尝试从文本文件中读取每一行并放入数组列中,我真的试过这个:

    string buffer[256];
string a;
ifstream myfile ("1.txt");

for(i=0;i<10000;i++)
    {

        //readArrivalTimes(i);
        myfile.getline (buffer,100);
        a[i]=buffer;
    }

但它不工作

所以我确实尝试了你给我的解决方案之一,我这样做了:

std::vector<std::string> v;
std::string buffer;


string a[1024];
ifstream myfile;
myfile.open("1.txt");

for(i=0;i<n;i++)
{
    getline (myfile, buffer);

    a[i]= buffer;
    cout << buffer << "\n";
}

但我们可以看到它是字符串!

我们可以让它作为整数工作吗?

[解决了 :)]

首先感谢大家帮助我,非常感谢您的帮助,我是 C++ 的新手。

当然这不是家庭作业。

我对代码做了一些修改,所以它可以处理整数

int a[1024];
ifstream myfile;
myfile.open("1.txt");

for(i=0;i<n;i++)
{
    getline (myfile, buffer);

    a[i]= atoi(buffer.c_str());
    cout << buffer << "\n";
}

非常感谢你。

4

3 回答 3

1

您的代码中有很多错误。
已经提到了一些,将 char* 分配给 int 数组。

但是你的方法比 C++ 更多。在 C++ 中,它看起来更像这样:

std::vector<std::string> lines;
std::ifstream myfile("1.txt");
if(myfile.isopen())
{
    std::string line;
    while(getline(myfile, line))
    {
        lines.push_back(line);
    }
}

我还没有测试过它,但它应该向您展示如何做到这一点的方法。

编辑:根据评论更改了代码。

再次编辑以使其适用于整数:

std::vector<int> numbers;
std::ifstream myfile("1.txt");
if(myfile.isopen())
{
    std::string line;
    while(getline(myfile, line))
    {
        int number;
        std::istringstream(line) >> number;
        numbers.push_back(number);
    }
}
于 2012-05-21T21:35:17.317 回答
0

a是一个字符串,它是字符集合的抽象。

a[i]将返回对单个字符的引用。

buffer是一个字符数组。C/C++ 约定,数组的名称命名一个指向其第一个元素的指针。

因此,您在循环中所做的是将itha 的元素分配给缓冲区开头的地址,这几乎肯定不是您想要做的。

您可能想要做的是制作一个字符串数组;即替换

string a;

string a[10000];

您的代码中还有其他需要解决的问题;例如,如果您的文件有 < 10k 行怎么办?

于 2012-05-21T21:22:38.120 回答
0
    int a[1024];
ifstream myfile;
myfile.open("1.txt");
for(i=0;i<n;i++)
{
    getline (myfile, buffer);

    a[i]= atoi(buffer.c_str());
    cout << buffer << "\n";
}

这是正确的答案

于 2012-05-26T08:02:02.287 回答