我在使用 OutputStream 将某些字节写入文件时遇到了一个奇怪的问题。
该问题似乎是由数据“编码”引起的。
如果我明确写入输出流
saveFile.write(new byte[]{(byte)0xFF});
Run Code Online (Sandbox Code Playgroud)
它工作正常,我在十六进制编辑器中看到 0xFF。
但是当我尝试用字符串执行此操作时,它不起作用。例子:
scriptData = "some script data thats all text and stuff" + ((char)0xFF) + ((char)0x3B);
saveFile.write(scriptData.getBytes(Charset.forName("UTF-8")));
Run Code Online (Sandbox Code Playgroud)
在我的十六进制编辑器中,我看到文本,然后是 0xC3BF,然后是 0x3B。为什么0x3B正确写入文件但0xFF变成0xC3BF?
我还看到了另外一个线程,但它涉及 PrintStream,据我所知,我没有使用它。
谢谢。
对于我想使用的每个新库,我注意到都有一个特定的标志或一组标志,我必须添加到编译中才能使其实际链接库。
例如,对于 GL GLEW 和 GLUT,我使用“ -lglut -lGLU -lGL”。
问题是找到我需要的这些标志的唯一方法是在谷歌上无休止地搜索它们。是否有一个“标准”位置可以为任何图书馆找到这些标志?它们是否附加到标题的顶部或其他位置?我希望这只是我遗漏的一些明显的东西。
我最近一直在努力学习来自java和其他高级语言背景的c ++.我一直有一些指针和对象的问题,我还没有找到一个很好的资源,它解释了如何使用指针操作使用自定义类创建的对象.
我写了一个简单的程序,试图缩小我的问题所在.
这个类底部的最后两个代码块是错误的,我敢打赌,我在其他部分也做了一些错误.任何帮助表示赞赏.
#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;
class Point {
public:
float x;
float y;
public:
Point(float x, float y) {
this->x=x;
this->y=y;
}
Point() {
x=0.0f;
y=0.0f;
}
~Point() {
x=0.0f;
y=0.0f;
}
};
class Place {
public:
string name;
Point location;
public:
//Constructor with arguements.
Place(string nam, Point loc) {
name = nam;
location = loc;
}
//Default constructor.
Place() {
name = "Default";
location = {0.0f,0.0f};
}
//Destructor. This object contains …Run Code Online (Sandbox Code Playgroud)