stringstream,这里的 num1 和 num2 发生了什么?
istringstream, whats happening to num1 & num2 here?
我正在阅读一本 C++ 书籍(针对专业人士的 cpluplusnotes),然后看到这个例子,想知道这里的 num1 / 2 发生了什么以及 in(xxxx) 是如何影响它的?
谢谢!
`#include <sstream>
...
std::istringstream in("10 010 10 010 10 010");
int num1, num2;
in >> std::oct >> num1 >> num2;
std::cout << "Parsing \"10 010\" with std::oct gives: " << num1 << ' ' << num2 << '\n';
// Output: Parsing "10 010" with std::oct gives: 8 8
in >> std::dec >> num1 >> num2;
std::cout << "Parsing \"10 010\" with std::dec gives: " << num1 << ' ' << num2 << '\n';
// Output: Parsing "10 010" with std::oct gives: 10 10
in >> std::resetiosflags(std::ios_base::basefield) >> num1 >> num2;
std::cout << "Parsing \"10 010\" with autodetect gives: " << num1 << ' ' << num2 << '\n';
// Parsing "10 010" with autodetect gives: 10 8
std::cout << std::setiosflags(std::ios_base::hex |
std::ios_base::uppercase |
std::ios_base::showbase) << 42 << '\n';
// Output: OX2A`
另请注意,我了解 Oct、dec、hex 和所有我只是不明白 num1/2 是如何从
中分配值的
std::oct
和 std::dec
告诉流如何将字符串转换为整数。
如果设置了其中之一,那么 num1
和 num2
的读取方式就好像它们是以 8 进制或 10 进制写入的一样。
当 none 设置时,10
被读取为十进制(不以 0 开头的数字字符串的默认值)并且 010
被读取为八进制(数字字符串的默认值)从 0 开始)。
我正在阅读一本 C++ 书籍(针对专业人士的 cpluplusnotes),然后看到这个例子,想知道这里的 num1 / 2 发生了什么以及 in(xxxx) 是如何影响它的?
谢谢!
`#include <sstream>
...
std::istringstream in("10 010 10 010 10 010");
int num1, num2;
in >> std::oct >> num1 >> num2;
std::cout << "Parsing \"10 010\" with std::oct gives: " << num1 << ' ' << num2 << '\n';
// Output: Parsing "10 010" with std::oct gives: 8 8
in >> std::dec >> num1 >> num2;
std::cout << "Parsing \"10 010\" with std::dec gives: " << num1 << ' ' << num2 << '\n';
// Output: Parsing "10 010" with std::oct gives: 10 10
in >> std::resetiosflags(std::ios_base::basefield) >> num1 >> num2;
std::cout << "Parsing \"10 010\" with autodetect gives: " << num1 << ' ' << num2 << '\n';
// Parsing "10 010" with autodetect gives: 10 8
std::cout << std::setiosflags(std::ios_base::hex |
std::ios_base::uppercase |
std::ios_base::showbase) << 42 << '\n';
// Output: OX2A`
另请注意,我了解 Oct、dec、hex 和所有我只是不明白 num1/2 是如何从
中分配值的std::oct
和 std::dec
告诉流如何将字符串转换为整数。
如果设置了其中之一,那么 num1
和 num2
的读取方式就好像它们是以 8 进制或 10 进制写入的一样。
当 none 设置时,10
被读取为十进制(不以 0 开头的数字字符串的默认值)并且 010
被读取为八进制(数字字符串的默认值)从 0 开始)。