![](/img/trans.png)
[英]I'm getting “undefined reference” errors and I don't understand why (C++ OO)
[英]I don't understand how I'm getting out of range errors here
我想做的非常非常簡單。 逐個字符讀取字符串並將數字寫入單獨的字符串,同時在其間包含空格。
前任。 原始字符串:“45+67-32”變為“45 67 32”
這是我的邏輯:
while (i < line.length())
{
char c = line.at(i);
if (isdigit(c))
{
c = line.at(i);
while (isdigit(c) || c == '.' && i < line.size())
{
expression = expression + line.at(i);
i++;
}
expression = expression + ' ';
}
i++;
}
C++ 標准規定了一種稱為短路的功能。 如果可以在不評估所有操作數的情況下確定邏輯運算的結果,則應該這樣做。 發生這種情況有兩種情況:
a || b
a || b
(a 或 b),如果a
為true
,則表達式也必須為true
且b
不相關,a && b
(a 和 b)中,如果a
為false
,則表達式也必須為false
,並且b
不相關。 由於短路, c == '.' && i < line.size()
只要isdigit(c)
為true
,就不會評估c == '.' && i < line.size()
。 因此,您永遠不知道您是否已經在字符串之外。
您可以通過使用短路到您的優勢來修復您的循環:
while (i < line.size() && (isdigit(c) || c == '.'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.