C++ 在c+;中从文本文件读取到数组+;?

C++ 在c+;中从文本文件读取到数组+;?,c++,C++,我试图从文本文件中读取每一行并将其放入数组列中,我确实尝试了以下方法: string buffer[256]; string a; ifstream myfile ("1.txt"); for(i=0;i<10000;i++) { //readArrivalTimes(i); myfile.getline (buffer,100); a[i]=buffer; } 字符串缓冲区[256]; 字符串a; ifstre

我试图从文本文件中读取每一行并将其放入数组列中,我确实尝试了以下方法:

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

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

        //readArrivalTimes(i);
        myfile.getline (buffer,100);
        a[i]=buffer;
    }
字符串缓冲区[256];
字符串a;
ifstream myfile(“1.txt”);

for(i=0;i
a
是一个字符串,它是字符集合的抽象

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

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

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

您可能要做的是创建一个字符串数组;即替换

string a;


您的代码中还有其他内容需要处理;例如,如果您的文件有<10k行,该怎么办?

代码中有许多错误。
其中一些已经提到,比如将char*分配给int数组

<>但是你的方法比C++更为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::矢量线;
std::ifstream myfile(“1.txt”);
if(myfile.isopen())
{
std::字符串行;
while(getline(myfile,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);
    }
}
std::向量数;
std::ifstream myfile(“1.txt”);
if(myfile.isopen())
{
std::字符串行;
while(getline(myfile,line))
{
整数;
std::istringstream(行)>>编号;
数字。推回(数字);
}
}
inta[1024];
ifstreammyfile;
myfile.open(“1.txt”);

对于(i=0;i调试器告诉您什么?如果您使用的是
string
s,那么为什么不首先将数据读入
string
?另外,行数组在哪里?此错误是cming:2 IntelliSense:无法将“char*”类型的值分配给“int”类型的实体c:\users\hajjaj\desktop\rr\roundrobin.cpp 57 8 rr您想将整个文件读入一个字符串,还是读入一个字符串数组,文件每行一个字符串?第一,请参见:。第二,停止更改代码!!他肯定应该使用
std::vector
!我猜这里有一些家庭作业限制。但他没有这样做这段代码中有很多错误(在行上加了一行)。while循环应该是这样的:
while(getline(myfile,line))
No-No!
while(myfile.good())
是一种iostream反模式!您应该使用
while(getline(myfile,line))
。否决了这种糟糕的风格。@JonathanWakely:这不仅仅是iostream-ant模式(除非你用一般语言不可知论的方式指IO)LokiAstari,我的意思是C++语言。我不会评论其他语言,但它让我恼火,因为人们坚持使用IoSokes,这样会使代码变长,结果出错。不只是打字,而是实际工作。为什么人们用另一种方式来做呢?!洛基斯塔里:抱歉,我不知道。我已经纠正了我的错误并记住了。嗨,你的代码可能会工作,但它不是好的C++。它是很糟糕的风格。我已经更新了我的代码来处理整数,看看它。
string a[10000];
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);
    }
}
    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";
}