【发布时间】:2020-12-14 18:36:13
【问题描述】:
所以我编写了一个将文件读入字符串的 C++ 项目。
//func to read file into string
std::string readFile( const std::string& fileName )
{
std::ifstream ifs( fileName );
return std::string((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>()));
}
//func call in main
std::string text = readFile("test.txt");
这是我为此使用的代码。
我正在使用 CLion 编写我的代码。我将标准编译器更改为 clang++。当我直接在 CLion 中运行 main.cpp 时,程序无法读取该文件。没有错误代码,但是当我调试程序时,它说参数文件名的类型不完整。
当我在终端中编译 main.cpp 时使用
clang++ -std=c++14 main.cpp -o histogram
然后运行它,它可以读取文件并且程序正常运行。
为什么它在终端可以工作,而在 CLion 却不行?
【问题讨论】:
-
"当我调试程序时,它说参数 fileName 的类型不完整。" 你的代码中没有显示,但是你
#include <string>吗? -
命令行
clang++ -std=c++14 main.cpp -o histogram在与源文件相同的目录中创建可执行文件。 CMake (CLion) 在其他目录中创建一个可执行文件。 -
C++ 程序将读取相对于工作目录的文件。将 IDE 中的工作目录设置设置为源目录。