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