gpt4 book ai didi

c++ - 用C++解析文件后分配变量

转载 作者:行者123 更新时间:2023-11-28 00:40:22 24 4
gpt4 key购买 nike

我正在寻找一些指导或帮助来解决我在 C++ 中遇到的这个特殊障碍。我来自 python 背景,所以有些事情让我感到困惑。我将一个文本文件作为命令行参数,并尝试将变量解析/分配给我在文本中阅读的内容。我做了一个 super 简单的文本文件,我认为是一个 super 简单的 cpp 文件。我确实根据其他一些类似于我在此处看到的已回答问题的建议来编写它。

在 python 中,我可以为 .readlines() 函数实现快速正则表达式排序并快速分配变量,我知道这在 CPP 中不会那么容易,所以这是我得到的:

#include <fstream>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
if (argv > 1)
{
std::ifstream s(argv[1]);
if (s.is_open())
; // compiler complained unless this was on its own line
{
int i, j, k; // assign ints, no idea why
s >> i >> j >> k; //
std::cout << i << endl;
std::cout << j << endl;
std::cout << k << endl;

// repeat the same with chars, try to assign from file reads?

}
}
}

我的文本文件只有:

5
3
1

我希望看到程序的输出是 "5\n 3\n 1"

这并没有发生。我希望最终做的是有一个目标线,如: “卡车500”并寻找“卡车”,但将一个整型卡车变量分配给“500”

如果我的问题到处都是,我很抱歉,但也欢迎任何帮助或引用正确的方向。谢谢!

最佳答案

首先,if 语句后的分号是 if 语句的完整条件 block (它绝对可以放在前一行,但几乎可以肯定您不想首先使用分号)。此外,您总是需要在阅读后检查您的输入!流不知道您接下来要尝试什么,也无法在实际尝试之前预测它是否会成功。也就是说,您的代码应如下所示:

std::ifstream in(argv[1]);
if (!in) {
std::cout << "ERROR: failed to open '" << argv[1] << "' for reading\n";
}
else {
int i, j, k;
if (std::cin >> i >> j >> k) {
std::cout << "read i=" << i << " j=" << j << " k=" << k << '\n';
}
else {
std::cout << "ERROR: there was a format error\n";
}
}

也就是说,根据您的代码,您应该会看到预期的输出,假设您确实设法正确打开了文件。我猜上面的代码会指出问题所在。

关于c++ - 用C++解析文件后分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19213281/

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