- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据 https://en.cppreference.com/w/cpp/io/manip/hex 中的示例从 std::stringstream 中读取一个十六进制值.当字符串的前导字符是数字字符 [0-9] 时,一切正常,但是当前导字符是字母字符 [a-f,A-F] 时,从流中获取值会消耗字符但不会分配值到整数。是否需要设置一个标志或其他东西来告诉 stringstream 或 std::hex 这实际上是一个有效的十六进制值并且应该这样解释?
我可能最终会从流中读取一个字符串并使用 std::stoi,但想知道为什么直接从字符串流中解析不起作用或者是否有办法让它起作用。
示例代码:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int anint = 0;
std::stringstream ss;
ss.str("1234abcd");
ss >> std::hex >> anint;
printf("anint = %x\n", anint);
anint = 0;
ss.str("a234abcd");
ss >> std::hex >> anint;
printf("anint = %x\n", anint);
return 0;
}
输出:
anint = 1234abcd
anint = 0
最佳答案
代码中的(主要)问题是您在第一次读取字符串流后没有清除 EOF
标志!此外,如果您的系统使用 32 位 int
类型,值 a234abcd
将溢出,您将(可能)得到一个值 0x7FFFFFFF
(即 INT_MAX
)。
下面的代码给出了(我认为)你想要的:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int anint = 0;
std::stringstream ss;
ss.str("1234abcd");
ss >> std::hex >> anint;
printf("anint = %x\n", anint);
ss.clear(); // Clear EOF flag!
anint = 0;
// ss.str("a234abcd");// Will overflow 32-bit int!
ss.str("a234abc"); // Works 'properly'
ss >> std::hex >> anint;
printf("anint = %x\n", anint);
return 0;
}
随时要求进一步澄清和/或解释。
关于C++11:当前导字符为 alpha (abcdef) 时如何从 stringstream 解析十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61392083/
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: What is the difference between char s[] and char *s in C?
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] 这条指令在c中正确吗: 5["
大家好,我正在研究一个以下列方式操作任何字符串的函数。 “abc”->“出租车” “abcd”->“dacb” "abcdef"-> "faebdc" “divergenta”->“adtinveer
我的 friend 写了一段代码来显示 python 中“abcdef”的所有字谜。但在这段代码中,我无法理解递归过程是如何工作的 anagrams = get_list_of_anagrams(''
我希望能够让用户输入 a-z 或 c-z 或 c-p 或其他任何内容,并让它返回这两者之间的实际字母。我想我必须使用 ASCII 编号,这样我才能使用这些步骤: 如果为真,则寻找“-” 查看输入的第一
我正在开发一个 Rails 应用程序,我需要在其中进行比较,例如: url == "http://localhost:3000/admin/admin_login" 我想知道是否有一种比较方式: ur
如果我在 Java 中运行此正则表达式,我将收到 {ab},但我希望收到 {ab, abc}。和我的question类似 但我也想找到类似的团体。 最佳答案 一个简单的解决方法是 (?=((ab)c)
我正在尝试根据 https://en.cppreference.com/w/cpp/io/manip/hex 中的示例从 std::stringstream 中读取一个十六进制值.当字符串的前导字符是
我编写了以下存储过程。它工作得很好并且给出了正确的结果。但添加一些属性后,它显示错误。如果我将最后检索到的属性的名称更改为四个字母的单词,那么它会正确运行。如果我将其作为存储过程运行,则会显示错误:
使用 POSIX sed或 awk ,我想在每对相邻字符中每隔一个字符复制一次,并在新行中列出每个新形成的对。 示例.txt: abcd 10001. 预期结果: ab bc cd d 1 10 0
这个问题在这里已经有了答案: Regex lookahead, lookbehind and atomic groups (5 个答案) 关闭 9 年前。 在 Javascript 中,我有一个字符
如果我在 java 中运行这个正则表达式,我将收到 {ab, de, f},但我想收到{ab、bc、de、f}。我认为 bc 无法收到,因为 bc 与 ab 字母重叠。如何更改默认行为? 最佳答案 您
到目前为止,当你输入 f 时没有任何反应,它只在输入 0 时有效,但我想要它,所以当你按 f 时,你会得到这个 a ab abc abcd abcde abcdef #include using n
Fatal error: Call to undefined function mb_convert_encoding() in /home/abcdef/public_html/folder_nam
我是一名优秀的程序员,十分优秀!