【发布时间】:2016-07-19 07:06:52
【问题描述】:
当我使用绝对路径打开文件时,我在项目目录中有 .in 文件,但相对路径不起作用。
目录内容
main.cpp
CMakeLists.txt
milk2.in
CMakeLists.txt
cmake_minimum_required(VERSION 3.3)
project(project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp )
add_executable(project ${SOURCE_FILES})
main.cpp
#include <iostream>
using namespace std;
int main() {
pair<int, int> periods[5000];
int lineCount = 0;
freopen("milk2.in", "r", stdin);
cin >> lineCount;
for (int j = 0; j < lineCount; ++j) {
cin >> periods[j].first >> periods[j].second;
}
int startNode = periods[0].first, endNode = periods[0].second, milkMax = 0, freeMax = 0;
for (int i = 1; i < lineCount; ++i) {
if (periods[i].first <= endNode) {
endNode = periods[i].second;
if ((endNode - startNode) > milkMax)
milkMax = endNode - startNode;
} else {
if ((periods[i].first - endNode) > freeMax)
freeMax = periods[i].first - endNode;
}
}
cout << milkMax << " " << freeMax << endl;
}
代码中没有错误,但无法读取具有相对路径的文件内容。
【问题讨论】:
-
when i use absolute path to open the file it works but relative path not working.- 这是因为您的.in文件位于 source 目录中,但可执行文件是在 build 目录中创建的。 other question 中描述了同样的问题,标题非常相似。 -
尽管它被认为是重复的,但我对这个主题的搜索都让我来到了这里。有一种很好的方法可以控制可执行文件用于文件 I/O 的文件夹。请在此处查看我的答案:stackoverflow.com/a/48632888/165164