相关疑难解决方法(0)

如何使用嵌入的null构造一个std :: string?

如果我想构造一个std :: string,其行如下:

std::string my_string("a\0b");
Run Code Online (Sandbox Code Playgroud)

我希望在结果字符串中有三个字符(a,null,b),我只得到一个.什么是正确的语法?

c++ null stdstring

82
推荐指数
7
解决办法
4万
查看次数

什么时候C++编译器开始考虑字符串文字字符转义中的两个以上十六进制数字?

我在C++中有一个(生成的)文字字符串,可能包含需要使用\x表示法转义的字符.例如:

char foo[] = "\xABEcho";
Run Code Online (Sandbox Code Playgroud)

但是,g ++(版本4.1.2,如果它很重要)会抛出一个错误:

test.cpp:1: error: hex escape sequence out of range
Run Code Online (Sandbox Code Playgroud)

编译器似乎将Ec字符视为前一个十六进制数字的一部分(因为它们看起来像十六进制数字).由于四位十六进制数不适合a char,因此会引发错误.显然,对于宽字符串文字L"\xABEcho",第一个字符是U + ABEC,其次是L"ho".

在过去的几十年里,这似乎发生了变化,我从未注意到.我几乎可以肯定旧的C编译器只会考虑两个十六进制数字\x,而不再看了.

我可以想到一个解决方法:

char foo[] = "\xAB""Echo";
Run Code Online (Sandbox Code Playgroud)

但那有点难看.所以我有三个问题:

  • 这什么时候改变了?

  • 为什么编译器只接受> 2位十六进制转义为宽字符串文字?

  • 有没有比上述更难的解决方法?

c++ string escaping literals

55
推荐指数
4
解决办法
1万
查看次数

如何在C中转义或终止转义序列

我有一系列字符我正在为解码功能提供支持:

例如:

"\x05three"
Run Code Online (Sandbox Code Playgroud)

(是的,这是一个Pascal样式的字符串.该函数将长度为前缀的字符串转换为以空字符结尾的字符串.)

我写了几个测试用例,其中包括:

"\x04four"
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它出现了"Oour".仔细观察,事实证明Visual Studio的转义序列规范允许,我的序列基本上被解释为\x04f,基数10中的79(因此我的结果字符串变为"Oour",79变为"O")

我的解决方案只是拆分字符串:

"\x04" "four"
Run Code Online (Sandbox Code Playgroud)

问题:是否存在另一种逃避或终止转义序列的方法?

c escaping

12
推荐指数
1
解决办法
2053
查看次数

使用 unicode 时 C++ 中的通用字符无效

我试图在 C++ 中使用 Unicode 字符“”('\uD83D\DC50'),但编译器报告以下错误:“无效的通用字符”。

c++ unicode c++11

5
推荐指数
0
解决办法
2927
查看次数

C++:读取没有扩展名的文件

我有一些文件类型为"文件"我的意思是代替"资源\ sample.txt",他们的名字是"资源\样本"现在我想用c ++读取它们并将它们存储在一个字符串中.这是我的代码:

std::stringstream textBuffer;
std::fstream fileHandle;
std::string content
fileHandle.open("Resource\sample", std::ios::in);
textBuffer << fileHandle.rdbuf();
content = textBuffer.str();
fileHandle.close();
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时,"content"变量的值等于"".帮助我.提前致谢.请注意,唯一的问题是文件没有任何扩展名,例如.txt或.dat或.bin.

c++ fstream file istream ostream

0
推荐指数
1
解决办法
646
查看次数

为什么类型char返回不同的值?

如果最大值char可以保持为255,那么如果我创建一个类型的变量char number并将其设置为等于= 255;那么std::cout << number;程序如何返回\377呢?

c++

0
推荐指数
1
解决办法
101
查看次数

标签 统计

c++ ×5

escaping ×2

c ×1

c++11 ×1

file ×1

fstream ×1

istream ×1

literals ×1

null ×1

ostream ×1

stdstring ×1

string ×1

unicode ×1