gpt4 book ai didi

c++ - 为什么 C++ 从 txt 文件中读取错误的值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:55 27 4
gpt4 key购买 nike

我做了一个程序,从txt文件“database.txt”中读取值,但是当数字是三位数时输出错误

ifstream myfile("database.txt");
int broj_rijeci = 0;
if (myfile.is_open())
{
while (getline(myfile, line))
{
if (line.at(0) == '[')
{
int i = line.length() - 2;
int brojac = 0;
system("pause");
while (line.at(i) != line.at(0))
{
input = line.at(i);
ascii_convert(input);
broj_rijeci = broj_rijeci + input * pow(10, brojac);
i--;
brojac++;
}
}
}
myfile.close();
}
else cout << "Unable to open file";

我的数据库是这样的:

[311]

输出为“310”

最佳答案

由于您没有提供 ascii_convert 的实现,因此很难判断问题出在何处还是在其他地方。但是,通过使用 std::stringstream,您可以大大简化该过程并消除对您自己的转换例程的需要。

#include <sstream>

std::ifstream myfile("database.txt");
if (myfile.is_open())
{
std::string line;
while (std::getline(myfile, line))
{
if (line.size() > 1 && line[0] == '[' && line[line.size() - 1] == ']')
{
int value;
if(std::istringstream(line.substr(1, line.size() - 2)) >> value)
{
// Conversion was a success ... do something with "value"
}
else
{
// Conversion failed. Handle error condition.
}
}
}
myfile.close();
}
else std::cout << "Unable to open file";

关于c++ - 为什么 C++ 从 txt 文件中读取错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com