参考了网上不少博客,说实话,感觉都只写了一半步骤,让人有点摸不着头绪,下面简单写一下我的配置过程,希望对大家有用啦。不喜勿喷!
前言
Mac的Xcode默认是从绝对路径进行搜索,不像VS直接导入文件即可使用相对路径操作,还需要进行设置。(如果不闲写绝对路径麻烦、难迁移工程,直接写绝对路径也可的)
设置步骤
操作步骤 product > scheme > edit scheme->options->workdictionary->use custom working dictionary
选中use custom working dictionary
, 输入你想开始执行相对路径的路径(图中写错了,难得改了)。
第二步:Demo
我的调用关系(仅为方便理解):
demo.cpp(main函数)=> 读取写在testlist.txt (包含了传入参数,读写文件路径 -》指向文件夹:1) => 根据在testlist.txt 文件中的路径对文件夹 1 进行读写操作 ,
这是在finder中的文件路径关系:
写相对路径代码:
调用路径过程:demo.cpp
中 从testlist.txt
读入参数和输入待读入文件的路径。下图是demo.cpp
中的调用代码(我的use custom working dictionary
设置的文件路径是到mac
。)
然后 testlist.txt
(用来调用文件夹 1
中的文件)的文件路径是 ./test_vec/1/
,其相对路径关系还是从 demo.cpp
开始计算。
⚠️ 注意:
-
在读入
testlist.txt
文件时,注意看你的代码读取格式,我使用别人的读取代码,发现是按空格来读取的,自己不小心在路径前多输入一个空格,调试半天代码!唉~~用打印的路径测试吧! -
这里面涉及到C/C++ 读写文件的路径表示方法:
参考链接:博客园 vrangerv 博主:C\C++编程中:相对路径+绝对路径 -
这个工程中,我使用到了字符串拷贝和拼接函数,在 VS 2017中使用的是
strncpy_s()
和strcat_s()
函数,但是在 mac 的 Xcode 中,他们并不受支持,于是我修改成strncpy()
和strncat()
函数。用法介绍如下:
=> strcat_s
strcat_s
脱胎于 strcat
,用于两个字符串的链接,strcat(str1,str2)
直接返回新的str1。但在vs2005后,为了安全起见,重新添加了些功能和api和以前不同。比如 strcat_s
。
为什么是安全起见呢?对于老的你添加str2的时候如果st1溢出怎么办?很明显这就是需要改进的地方。
所以新的strcat_s规定,有三个参数,必须指定str1的大小使用方法如下:
char string[20]="123";
strcat_s(string,sizeof(string),"456");
printf("%s",string);
=>strncat()
//TODO
网速不好,难得写了。。。。参考菜鸟教程或者其他博客吧:
菜鸟教程: https://www.runoob.com/cprogramming/c-function-strncat.html