gpt4 book ai didi

c++ - 从文本文件中读取整数

转载 作者:行者123 更新时间:2023-11-28 05:19:58 25 4
gpt4 key购买 nike

对于我正在进行的项目,我试图从文本文件中读取整数。在这种情况下,它们被格式化为变量,例如 U=220V,因此我试图从等号之后读取到 V。这是我想出的代码:

if (word[0] == 'U') {

//declaring variables for checking for certain letters
char v = 'V';
char m = 'm';
char M = 'M';

//taking in integer for voltage
while (word[i] != v) {
volt = volt + word[i];
i++;
}
cout << volt << endl;

在测试用例中,U=200V、U=220V 和 U=22000mV(m 为毫,稍后将使用不同的函数处理)三个值随机插入整个文件。测试时,我收到输出:

200
200
20000m

第一个输出是正确的。在第二种和第三种情况下,它似乎首先丢失了数字,而在第三种情况下,它在末尾添加了另一个零。本来以为只是舍弃了第一个值,改了一行代码

volt = volt + word[i];

volt = volt + word[i-1];

在最初读入的值之前查看它会读入什么值。在这种情况下,如果它正常工作,它会执行我期望的操作,输出格式为:

=200
=200
=20000m

我在这里忽略了我的代码逻辑中的缺陷吗?

编辑:在尝试进一步调试时,我将最后的打印行从 while 循环外部移动到它内部,以查看循环逐步输出的内容。看起来它从 2 开始,并继续在每次迭代结束时添加 0,直到以 200000m 结束

最佳答案

问题似乎与 i 和 volt 的值在每次迭代后都没有重置有关。为了解决这个问题,我添加了以下代码行:

volt = "";
i = 2;

(在这种情况下,i 设置为 2 以在解析时忽略原始 V 和 =)然后我再次运行程序,打印出要测试的值,现在似乎输出了正确的值。所以整个代码块,更新后,现在看起来像:

while (myfile >> word) {

volt = "";
i = 2;

//printing out words (remove)
cout << word << endl;

//checking for U in words
if (word[0] == 'U') {

//declaring variables for checking for certain letters
char v = 'V';
char m = 'm';
char M = 'M';

//taking in integer for voltage
while (word[i] != v) {
volt = volt + word[i];
i++;
//cout << volt << endl;
}
cout << volt << endl;

关于c++ - 从文本文件中读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41711468/

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