c++从.txt文件读取整数到堆栈
c++ Reading in integers from a .txt file to a stack
这太愚蠢了。我已经被困了一个小时,试图在.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
变量。
相关文章:
- 如何反转整数参数包
- enum是C++中的宏变量还是整数变量
- 努力将整数转换为链表。不知道我在这里做错了什么
- 整数不会重复超过随机数
- 在C++中手动调整数组大小
- 检查输入是否不是整数或数字
- C++使用整数的压缩数组初始化对象
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 斯塔克,堆栈,也可以在底部和顶部添加整数
- 找出堆栈数组中的下一个整数是否相同
- C++ 堆栈字符串流函数返回整数与 ASCII
- C++使用链表、模板和堆栈设计了一个大整数加减法类
- 基于整数的函数递增/递减堆栈指针
- c++从.txt文件读取整数到堆栈
- 如何在数组中找到整数的ADT堆栈中的最大值
- 为什么堆栈上对齐的整数之间有 8 个字节的"0xcc"填充?C++ 32位视窗7
- 堆栈vs整数
- 欧拉项目:#14整数溢出和堆栈溢出
- 指向堆栈整数的指针的值(变为NULL)