是否有32位宽的字符用于编码UTF-32字符串?我想这样做std::wstring
,显然在Windows平台上显示我的宽字符大小为16位.
C99 6.3.2.3/3 值为 0 的整型常量表达式,或此类转换为 void * 类型的表达式,称为空指针常量。55) 如果将空指针常量转换为指针类型,则生成的指针,称为空指针,保证与任何对象或函数的指针比较不相等。
它是否说两个空指针比较不相等?但他们确实:
int *a = 0;
int *b = 0;
assert(a == b); // true
Run Code Online (Sandbox Code Playgroud)
我想知道在这种情况下有什么不平等?
我有从派生类派生的类,例如:
class A
{
public:
virtual void doSomething() {}
virtual ~A{}
};
class B : public A
{
//...something...
void doSomething() {}
}
class C : public B
{
//...something...
void doSomething() {}
}
class D : public B, public C
{
//...something...
void doSomething() {}
}
Run Code Online (Sandbox Code Playgroud)
我的问题如标题所述:无论我如何使用它,我是否只需要基类中的虚函数?
例如:
A *p = new B
delete p;
B *p2 = new C
delete p2;
Run Code Online (Sandbox Code Playgroud) 你如何获得控制台的大小输入字符串或缓冲区中有效字符的大小?
char buffer[100];
cin >> buffer;
Run Code Online (Sandbox Code Playgroud)
我想把'\ 0'放在输入结束的地方.
如何在位级检查OS的'endianness'或OS是否甚至关心这些位的存储顺序?
我正在学习一些具有 C++ 背景的 Java 课程和对象课程。我想知道为什么我们不能选择在堆栈内存上声明的对象?为什么除了原始类型之外的所有内容都必须放在堆上?
这是澄清我所问内容的一些内容。
本质上,如果我们有:
Scanner input = new Scanner(System.in);
那么为什么我们不能首先将它放在堆栈上呢?
我遇到了两个代码片段
std::wstring str = std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>>().from_bytes("some utf8 string");
Run Code Online (Sandbox Code Playgroud)
和,
std::wstring str = std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes("some utf8 string");
Run Code Online (Sandbox Code Playgroud)
它们是否都是将存储的 utf-8 转换std::string
为 utf-16 的正确方法std::wstring
?
std::string str = "string":
const char* cstr = str.c_str();
str.clear();
//here, check if cstr points to a string literal.
Run Code Online (Sandbox Code Playgroud)
cstr
在调试或发布模式下运行程序时,如何检查是否仍指向字符串?
有没有办法在C++中使用异常处理来确定这个?
你应该保留除了班级功能以外的所有数据吗?例如:我有一个std ::整数列表,我需要在其他类中访问.你会如何迭代它,你真的想把它保密吗?
编辑:
我正在寻找对其他课程中每个元素的个人访问权限.
我有以下代码:
typedef struct Y {int X;} X;
enum E {X};
Run Code Online (Sandbox Code Playgroud)
这会产生错误:
错误:'X'重新声明为不同类型的符号
据我所知,C隐式定义了结构,联合和枚举标记以及它们的成员的名称空间.所以,我不确定为什么会E::X
碰到typedef结构标签X
?
C中的名称空间究竟是什么?
我只是想知道以下是否是将 int 转换为 char 的正确方法
#include <stdio.h>
int main()
{
int x = 500;
printf("%hhd\n", x);
}
Run Code Online (Sandbox Code Playgroud)
另外,从上面我想知道是否应该执行以下操作来显示字符的值。
#include <stdio.h>
int main()
{
char c = 'a';
printf("%hhd\n", c);
}
Run Code Online (Sandbox Code Playgroud)
还是会printf("%d\n", c);
没事的?所以,基本上我试图通过 printf 输出整数的第一个字节而不进行任何转换。