gpt4 book ai didi

c++从.txt文件中读取整数到堆栈

转载 作者:太空狗 更新时间:2023-10-29 20:16:38 25 4
gpt4 key购买 nike

这太蠢了。我已经被困了一个小时,试图读取由单个空格分隔的数字的 .txt 文件。由于某种原因,while 循环只执行一次!

#include <iostream>
#include <string>
#include <fstream>
#include <stack>

using namespace std;

int main(int argc, char* argv[])
{
string line;
string str(argv[1]);
ifstream myfile((str).c_str());
int num;
stack<int> x;

while (myfile >> num);
{
x.push(num);
}

return(0);
}

最佳答案

嗯,仔细看看这一行:

while (myfile >> num);

最后,您会注意到分号。编译器认为这意味着您需要一个什么都不做的循环(此处的分号表示单个空语句)。因此,循环读取所有数字,但不对它们执行任何操作。

下一部分被单独解释为在其自身范围内的语句(用大括号表示),将在循环后执行:

{
x.push(num);
}

所做的只是将读取的最后一个数字压入堆栈,让您认为循环只执行一次。

删除 ;你没事!一旦被它咬伤,你将永远不会忘记 ;-)

顺便说一句,取 argv[1] 有点傻(C 风格的字符串),将其放入 string 中对象,然后使用 c_str()将其转换回 ifstream 构造函数的 C 字符串。只需使用 argv[1]直接,因为你没有用它做任何其他事情。另外,最好检查一下 argc首先确保传入文件名。最后,您应该检查文件是否已成功打开,而不是假设它——至少用 assert(myfile.is_open()); 使您的假设明确。 .哦,你不使用 line完全可变。

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

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