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這樣的解析器生成器。 –