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;ia
是一个字符串,它是字符集合的抽象
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";
}