我已经创建了一个从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";
Run Code Online (Sandbox Code Playgroud)
我的数据库看起来像这样:
[311]
Run Code Online (Sandbox Code Playgroud)
输出为"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";
Run Code Online (Sandbox Code Playgroud)