我正在尝试阅读一个数字文件。
使用我的代码,我只读取每一行的第一个数字。 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;
}
答案 0 :(得分: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;
}
注意:
uint8_t
类型保证8位无符号整数。答案 1 :(得分:0)
您可以使用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;
}