从文件 C++ 读取字符串流

isstringstream reading from file c++

本文关键字:字符串 读取 C++ 文件      更新时间:2023-10-16

我正在尝试读取一个数字文件。

getline() 获取该行,但 isstringstream 仅从该行中读取 1 个数字,而忽略了其余的数字。我需要读取每个数字并将其插入我的向量中

文件示例为:

118 115 115 116 116 116 118 117 115 114 114 115 117 118 117 114 114 116 117 
116 117 117 117 116 115 115 115 115 116 118 118 117 116 114 112 112 112 114 
115 ... so on

int main()
{
vector<unsigned char>gray;
int lines=2;
    for (int i = 0; i < lines; i++)
    {
        string line4;
        getline(infile, line4);
        istringstream iss4(line4);
        int g;
        iss4 >> g;
        gray.push_back((unsigned char)g);
    }
return 0;
}

稍微改变一下你的代码:

#include <cstdint> // For uint8_t
int main()
{
    vector<uint8_t>gray;
    unsigned int line_number = 0U;
    std::string text;
    while (getline(infile, text))
    {
        istringstream iss4(text);
        uint8_t value;
        while (iss4 >> value)
        {
            gray.push_back(value);
        }
    }
return 0;
}  

笔记:

  1. 提取更多内容时,可以像文件一样处理大于一个值。
  2. uint8_t 类型保证 8 位无符号整数。
您可以使用

std::istream_iterator方法;这里显示了使用std::cin的示例。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    std::vector<unsigned char> gray;
    std::copy(std::istream_iterator<int>{std::cin},
              std::istream_iterator<int>{},
              std::back_inserter(gray));
    return 0;
}