C++关于文件检索的源码转译技巧(R"()"方式)

本文解析C/C++中如何正确处理文件路径字符串,避免编译警告,使用\\或源码转译特性R()解决路径层级符号问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C/C++编写代码的过程中,经常会用到检索文件路径的时候, 首先要明确一点,由于“\”符号是C\C++的保留符号,因此直接粘贴路径字符串在代码中是不能使用的。例如下面的方法,是不能得到目标路径字符串的。

string s0 = "C:\Users\Administrator\Desktop\RWtest\write.txt";
cout << s0.data() << endl;

 按照上面的方式,在编译阶段就会报出一些warning,而且得到的结果输出也不是预期的路径字符串,如下图。

这是由于“\”是C\C++的转译符号,比如“\n”表示换行,“\r”表示回车,等信息。此外单独的“\”符号可以用于代码过长时在上一行打断代码,在下一行承接继续书写的功能。

因此如上面的用法时, 编译器会报出warning如下图:

我们常用的方式是,利用“\\”就可以得到预期中的路径层级符号了,如下面代码:

string s = "C:\\Users\\Administrator\\Desktop\\RWtest\\write.txt";
cout << s.data() << endl;

得到的输出结果与预期相同:

但是如果频繁用到路径检索的时候,“\\”需要手动添加十分麻烦,这里介绍一种C++的新特性——源码转译。

就是指按照字面源码进行编译,不再区分是否为C\C++保留的符号,使用方法如下:

string s1 = R"(C:\Users\Administrator\Desktop\RWtest\write.txt)";
cout << s1.data() << endl;

由此得到的输出与使用“\\”是一致的,对比实验如下图所示:

	string s0 = "C:\Users\Administrator\Desktop\RWtest\write.txt";
	string s = "C:\\Users\\Administrator\\Desktop\\RWtest\\write.txt";
	string s1 = R"(C:\Users\Administrator\Desktop\RWtest\write.txt)";
	cout << s0.data() << endl;
	cout << s.data() << endl;
	cout << s1.data() << endl;
	system("pause");

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值