簡體   English   中英

R6010使用時出錯; 的std :: Stoi旅館

[英]R6010 Error When Using; std::stoi

我一直收到錯誤R6010 - abort() has been called. std::stoi()調用中,現在找出原因,首先顯示手頭的代碼;

    std::string str;

    for (int i = 0; i < numberofvalues; i++)
    {
        str = cmemblock[i];
        if (cmemblock[i] == '\n' || cmemblock[i] == '\r')
        {
            cout << cmemblock[i] << endl;
        }
        else
        {
            int number = std::stoi(str);
            cout << number;
        }
    }

該程序在此階段的目的是讀取.txt文件並以int格式顯示輸出,如果.txt文件包含多於1行數據,則會發生錯誤。

我還應該注意, cmemblock是以cmemblock格式存儲的文本文件。

我需要一些有關如何以int格式表示所有數據行的指導。

std::stoi()期望在傳遞的std::string參數中看到單個數字輸入,例如:

int x = std::stoi("12345");

不需要多余的字符,行尾,多行等。 您也可以使用從str初始化的std::istringstream

std::string str = &(cmemblock[0]);
std::istringstream iss(str);
int number;
if(!(iss >> number)) {
    // print error ...
}

要隨后讀取更多值(由空格或'\\n'分隔),您還可以進行循環:

std::vector<int> numbers;
int number;
while(iss >> number) {
    // collect inputs
    numbers.push_back(number);
}

if(!iss.eof()) {
    // input format error occurred ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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