c++ 如何读取一个文本文件并从中设置一个int变量?[已关闭]

kb5ga3dv  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(124)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question

std::string line;
std::ifstream myfile("C:/Users/mathk/source/repos/Cooler/Cooler/Control/Saves/cash.txt");
if (myfile.is_open())
{
    while (getline(myfile, line))
    {
        std::cout << line << '\n';
    }
    cash = std::stoi(line);
    myfile.close();
}

std::ifstream myfile2("C:/Users/mathk/source/repos/Cooler/Cooler/Control/Saves/gems.txt");
std::string line2;
if (myfile.is_open())
{
    while (getline(myfile2, line2))
    {
        std::cout << line2 << '\n';
    }
    gems = std::stoi(line2);
    myfile2.close();
}

std::ifstream myfile3("C:/Users/mathk/source/repos/Cooler/Cooler/Control/Saves/multiplier.txt");
std::string line3;
if (myfile3.is_open())
{
    while (getline(myfile3, line3))
    {
        std::cout << line3 << '\n';
    }
    multi = std::stoi(line3);
    myfile3.close();
}

label2->Text = "" + cash;
label3->Text = "Multi: " + multi;
label4->Text = "Gems: " + gems;

我得到这个错误:

System.Runtime.InteropServices.SEHException: 'External component has thrown an exception.'

我尝试将文本存储到int变量中,但没有成功。所有文本文档中只有一个数字。
顺便说一句:我正在使用一个带有C++的CLX .NET框架应用程序。

icomxhvb

icomxhvb1#

在所有这三种情况下,您都是在 * std::getline()无法将数据读入std::string * 之后在std::string * 上调用std::stoi()由于std::string不表示有效的整数值,std::stoi()抛出一个您没有捕获的异常,因此它越过边界进入调用您的C++代码的.NET框架,后者然后抱怨该异常。
您没有显示文本文件的实际外观,但根据您的语句“There is only one digit in all text docs",您根本不需要std::getline()循环,而是使用operator>>从每个文件读取整数值,例如:

int cash = 0, gems = 0, multi = 0;

std::string folder = "C:/Users/mathk/source/repos/Cooler/Cooler/Control/Saves/";

std::ifstream myfile(folder + "cash.txt");
if (myfile.is_open())
{
    myfile >> cash;
    std::cout << cash << '\n';
    myfile.close();
}

std::ifstream myfile2(folder + "gems.txt");
if (myfile2.is_open())
{
    myfile2 >> gems;
    std::cout << gems << '\n';
    myfile2.close();
}

std::ifstream myfile3(folder + "multiplier.txt");
if (myfile3.is_open())
{
    myfile3 >> multi;
    std::cout << multi << '\n';
    myfile3.close();
}

...

相关问题