从文本文件中读取整数并使用 C++ 将它们存储到向量中
Posted
技术标签:
【中文标题】从文本文件中读取整数并使用 C++ 将它们存储到向量中【英文标题】:Reading integers from a text file and storing them into a vector using C++ 【发布时间】:2020-05-15 18:05:08 【问题描述】:我正在尝试从数据文件中读取每行的最后一个数字。 当我读取最后两位数字时,它会转换为字符串。 我的代码看起来像(到目前为止):
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int main()
string line;
ifstream fin;
fin.open("prim.txt");
while (fin)
getline(fin, line);
// cout<<line<<endl;
string s;
int i = 0;
for (int i = line.size() - 2; i < line.size(); i++)
s = s + line[i];
cout << s << endl;
fin.close();
return 0;
我要从中获取数据的文本文件是: prim.txt
我想将每行的最后一个数字存储到一个 int 类型的向量中。
【问题讨论】:
将该文件的文本放入您的问题中。无法复制粘贴图片进行测试。也许如果您还描述了您遇到的问题。 使用>>
将输入放入单独的变量中。无需内部 for
循环来尝试确定要使用多少个字符。
@sweenish 我已经给出了我的文本文件的实例。我正在使用 .txt 文件。问题是我无法转换最后一个数字,因为它是字符串类或字符串流
@PaulMcKenzie 你能分享一下代码吗
@SUDIPTASAMAL “无法复制粘贴图片进行测试”的哪一部分难以理解?如果您需要代码方面的帮助,需要的是可以复制和粘贴的文本,而不是文本图片。下次发布问题时请记住这一点。
【参考方案1】:
如果文件的每一行包含 3 个以空格分隔的数字,则无需通过 getline
进行复杂的解析。只需读取 3 个数字,直到读取失败并将其中的最后一个存储在向量中:
std::vector<int> numbers;
int a,b,c;
while( fin >> a >> b >> c) numbers.push_back(c);
您的代码假定最后一个数字有 2 位数字,但情况并非总是如此。当一行中有尾随空格时,这也会失败。此外,当您可以直接读取int
s 时,无需读取为字符串然后转换为int
。最后但并非最不重要的一点是,您的 contidion while(fin)
是“为时已晚”,因为当没有更多行可读取时,最后一个 getline
将失败,但是您仍然尝试处理该行(如果您想继续使用 @ 987654327@你可以使用while(getline(fin,line))
)。
【讨论】:
谢谢@Idclev。有效。我是 C++ 新手,所以我不擅长简化处理。你的解决方案真的很有帮助以上是关于从文本文件中读取整数并使用 C++ 将它们存储到向量中的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中写入整数并从二进制文件中读取它们:字节数 mismaych