从文本文件中读取整数并使用 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 类型的向量中。

【问题讨论】:

将该文件的文本放入您的问题中。无法复制粘贴图片进行测试。也许如果您还描述了您遇到的问题。 使用&gt;&gt; 将输入放入单独的变量中。无需内部 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 位数字,但情况并非总是如此。当一行中有尾随空格时,这也会失败。此外,当您可以直接读取ints 时,无需读取为字符串然后转换为int。最后但并非最不重要的一点是,您的 contidion while(fin) 是“为时已晚”,因为当没有更多行可读取时,最后一个 getline 将失败,但是您仍然尝试处理该行(如果您想继续使用 @ 987654327@你可以使用while(getline(fin,line)))。

【讨论】:

谢谢@Idclev。有效。我是 C++ 新手,所以我不擅长简化处理。你的解决方案真的很有帮助

以上是关于从文本文件中读取整数并使用 C++ 将它们存储到向量中的主要内容,如果未能解决你的问题,请参考以下文章

从文件逐字读取并确定换行 C++

读入字符并创建数组c ++

在 C++ 中写入整数并从二进制文件中读取它们:字节数 mismaych

如何从 C++ 中的文本文件中逐行读取整数? [复制]

如何转换从文本文件中读取的整数并存储为具有16位整数的二进制文件?

从文本文件 C++ 中读取(fname、lname、class、seat number),存储和验证