C++ 如何将ppm文件的RGB值存储到C++;
任务是操作PPM文件并将RGB值存储到数组中。我能够抓取文件的头并获取P6、宽度、高度和最大RGB值,但我无法获取RGB值本身。我知道像素数据被空格隔开,但流输入仍然找不到它。我们还没有学习过课程或指针,所以可以不使用任何一种吗C++ 如何将ppm文件的RGB值存储到C++;,c++,arrays,rgb,fstream,C++,Arrays,Rgb,Fstream,任务是操作PPM文件并将RGB值存储到数组中。我能够抓取文件的头并获取P6、宽度、高度和最大RGB值,但我无法获取RGB值本身。我知道像素数据被空格隔开,但流输入仍然找不到它。我们还没有学习过课程或指针,所以可以不使用任何一种吗 #include <fstream> #include <iostream> #include <string> const int WID = 648; const int HEIGHT = 486; int main() {
#include <fstream>
#include <iostream>
#include <string>
const int WID = 648;
const int HEIGHT = 486;
int main() {
int arr[HEIGHT * WID * 3];
unsigned char r, g, b;
std::string header;
int wid, hei, max;
std::ifstream fin;
fin.open("file.ppm");
if (fin.fail()) {
std::cout << "file did not open: << std::endl;
}
fin >> header;
fin >> wid >> hei >> max;
for (int i; i < HEI * WID * 3; ++i) {
r = arr[i];
g = arr[i + 1];
b = arr[i + 2];
}
std::cout << header << wid << hei << max << r << g << b;
fin.close();
return 0;
}
#包括
#包括
#包括
常数int WID=648;
const int HEIGHT=486;
int main(){
内方位[高度*宽度*3];
无符号字符r,g,b;
std::字符串头;
int wid,hei,max;
std::ifstream-fin;
fin.open(“file.ppm”);
if(fin.fail()){
std::cout奇怪--如果文件无法打开,您的程序将继续运行,就像没有任何错误一样。int arr[HEIGHT*WID*3];
--假设sizeof(int)==4
超过3.5 MB的堆栈内存。堆栈大小有限。使用堆内存,或使该数组成为全局数组。arr
中的值来自何处?请注意,r
、g
和b
被声明为无符号字符
,因此,根据它们的实际值,它们可能不会可打印。请尝试使用std::cout(int i;< /c>)叹息。未定义的行为。所显示的程序的每一秒钟或第三行都有问题。需要什么。在尝试解决像解析图形文件之类的问题之前,您将从集中一些C++基础和基本概念中获得更多的好处,并使它们变得更为坚实。