0
如何使istringstream无法完全读取带后缀的数字字面值?使用istringstream(C++)获得很长的后缀
#include <iostream>
#include <sstream>
using namespace std;
int main() {
long long x = 123ULL; // shows 123ULL is a valid long long literal
istringstream iss("123ULL");
iss >> x;
cout << "x is " << x << endl;
char extra;
iss >> extra;
cout << "remaining characters: ";
while(!iss.eof())
{
cout << extra;
iss >> extra;
}
cout << endl;
return 0;
}
这段代码的输出是
x is 123
remaining characters: ULL
这种行为是由地方来控制?任何人都可以指出我清除istringstream::operator>>(long long)
接受哪些字符串的文档?
感谢。你能否建议用C++解释C++数字文字的标准方法? – ricab
你会为它编写一个包装器类型('struct CppInt')并重载'operator >>'。您可能希望将后缀信息添加到结构中,例如它可以有一个'bool unsigned'和'enum Type type'(对于后缀'L'和'LL'),如果你的程序关心的话。但是,如果你正在解析后缀为整数文字的东西,那么流可能是解析它的错误方法;你应该看看像Boost.Spirit这样的解析器生成器。 –