gpt4 book ai didi

c++ - 如何在 C++ 中使用带有 freopen 的 cmake?

转载 作者:行者123 更新时间:2023-11-28 05:35:34 24 4
gpt4 key购买 nike

我正在编写一个小型控制台程序,我想将 stdin/stdout 定向到与 cpp 文件位于同一目录中的 txt 文件的读/写。cpp 看起来像这样:

int main(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
//read input
scanf(...);
//proccess input
//proccsing....
//output
printf(...);
}

CMakeLists.txt 文件如下所示:

cmake_minimum_required(VERSION 3.5)
project(ACM)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(ACM ${SOURCE_FILES})

项目构建成功,但没有产生任何输出。检查后我注意到 freopen 找不到 txt 文件。我应该向 CMakeLists.txt 添加什么以在构建中包含 txt 文件?PS:我是 CMake 的新手,因此不胜感激。

最佳答案

如果您确实需要它来进行调试,请将以下定义添加到 CMakeLists.txt:

add_definitions(-DSRC_PATH="${CMAKE_SOURCE_DIR}")

然后像这样重新打开文件:

freopen(SRC_PATH"/in.txt","r",stdin);
freopen(SRC_PATH"/out.txt","w",stdout);

它在 Linux 上工作,应该在其他类 unix 平台上工作,并且可能需要在 Windows 下使用斜线进行一些额外的操作。无论如何,您可以通过 printf("%s\n", SRC_PATH"/in.txt"); 进行调试。

关于c++ - 如何在 C++ 中使用带有 freopen 的 cmake?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384809/

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