![](/img/trans.png)
[英]C++ reading from a text file into a array and then into another text file
[英]reading from a text file to array in 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;
}
但它没有用
所以我尝试了你给我的一个解决方案,我这样做了:
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";
}
非常感谢你。
您的代码中存在许多错误。
已经提到了一些,因为将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::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);
}
}
a
是一个字符串,它是一组字符的抽象。
a[i]
将返回对个别角色的引用。
buffer
是一个字符数组。 C / C ++约定,即数组名称指向指向其第一个元素的指针。
所以,你在循环中所做的是将a的ith
元素分配给缓冲区开头的地址,这几乎肯定不是你想要做的。
你想要做的就是制作一个字符串数组; 即替换
string a;
同
string a[10000];
您的代码中还有其他要解决的问题; 例如,如果您的文件有<10k行怎么办?
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";
}
这是正确的答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.