如何測試字符串運算符>是否解析了壞類型并跳過它我對討論使用的方法很感興趣stringstream若要分析具有多種類型的行,請執(zhí)行以下操作。首先,我要看一看下面的一行:"2.832 1.3067 nana 1.678"現在讓我們假設我有一個長行,其中包含多個strings和doubles..解決這一問題的明顯方法是對字符串進行標記化,然后檢查每個字符串的轉換。我有興趣跳過第二步,并使用stringstream直接找到數字。我想了一個很好的方法來處理這個問題,那就是讀取字符串并檢查failbit已被設置,如果我嘗試將字符串解析為Double,它將被設置為。假設我有以下代碼:string a("2.832 1.3067 nana 1.678");
stringstream parser;
parser.str(a);
for (int i = 0; i < 4; ++i)
{
double b;
parser >> b;
if (parser.fail())
{
std::cout << "Failed!" << std::endl;
parser.clear();
}
std::cout << b << std::endl;
}它將打印以下內容:2.8321.3067Failed!0Failed!0我并不奇怪它不能解析一個字符串,但是內部所發(fā)生的事情,以致于無法清除其failbit解析下一個號碼?
- 3 回答
- 0 關注
- 532 瀏覽
添加回答
舉報
0/150
提交
取消