簡體   English   中英

我不明白我是如何在這里出現超出范圍的錯誤

[英]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++ 標准規定了一種稱為短路的功能。 如果可以在不評估所有操作數的情況下確定邏輯運算的結果,則應該這樣做。 發生這種情況有兩種情況:

  1. 在表達式a || b a || b (a 或 b),如果atrue ,則表達式也必須為trueb不相關,
  2. 在表達式a && b (a 和 b)中,如果afalse ,則表達式也必須為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM