gpt4 book ai didi

C++ 基本文件 IO 位置

转载 作者:太空狗 更新时间:2023-10-29 21:40:31 26 4
gpt4 key购买 nike

所以我才刚刚开始学习 fileIO。我一直在我的 Mac 上使用一个名为 CodeRunner 的程序,我有一个包含以下内容的文件夹:

validsudoku.cpp, validsudoku, sudokugood0.txt

我写的代码开头是:

int main(int argc, char const *argv[]){

//string filetoopen;
ifstream sudokutxtfile;
string txtline;
string sudokubox[9];
//bool goodsudoku = true;
//int i, j, row, column;

/*
if (argc == 2)
filetoopen = argv[1];
else
filetoopen = "sudokuboard.txt";
*/

//read in file, save to array, close file
sudokutxtfile.open("sudokugood0.txt");
while (getline(sudokutxtfile,txtline))
{
sudokubox[row] = txtline;
row++;
}
sudokutxtfile.close();

现在为了测试这个,我只需要将文件打开为 "sudokugood0.txt",尽管一旦我开始工作,我会将其更改为我的 'filetoopen' 变量,这样我就可以在终端输入文件名。

现在谈谈我的问题:当我在 CodeRunner 中运行 .cpp 时,它运行正确,看到 .txt 文件并处理它,但是当我将可执行文件和 .txt 我的 bin 文件夹中的文件并尝试从终端运行它它没有看到 .txt 文件。我是不是使用了错误的位置,还是遗漏了其他信息?

附带问题:它在 OSX 中运行,但在我的 Xubuntu VMbox 中使用我需要用于类(class)的代码块,我得到“段错误(核心转储)”有人知道为什么吗?我的文件顶部都有:

#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

最佳答案

程序会尝试在当前 工作目录中找到您打开的文件,而不是从可执行文件所在的位置。当您从终端执行程序时,当前目录就是您所在的目录。因此,如果您这样做,例如cd ~/ 转到您的主目录,然后运行程序,程序将在您的主目录中查找文件。如果您更改到其他目录,程序将在该新目录中查找文件。

自然的解决方案是将输入文件作为参数传递给可执行文件,或者请求它作为输入(我推荐第一种)。

关于C++ 基本文件 IO 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30906924/

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