多行字符串怎么定义方便

_G_M_000 2018-12-13 09:11:50
假如有这么一段文字
姓名:小王
性别:男
年龄:13
然后在C++里我们一般都是这样的
char *c = "姓名:小王\r\n性别:男\r\n年龄:13";
如果是一大段好多行文字的话会很麻烦的,所以我想改成这样的
char *c = "
姓名:小王
性别:男
年龄 : 13
";
当然,这样也肯定是编译不通过的,但是我希望这样,中间可以随意多行文字,也不用各种转义比如换行符
因为这个的正确写法是这样的
char *c = " \
姓名:小王\r\n\
性别:男\r\n\
n年龄 : 13\r\n\
";
这样还是很麻烦,\r\n表示换行,然后最后一个\后面不带任何符号的表示字符串接下一行还不带换行的,相当于#define中的\
所以想找一个歪门邪道来解决这个问题
...全文
1249 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiht594 2018-12-25
  • 打赏
  • 举报
回复
string s1 = ""
string s2 = ""
string s3 = ""

string sssss = s1 + s2 + s3
  • 打赏
  • 举报
回复
放到配置文件中,读取配置文件。 如果内容有更改,修改配置文件即可,不需要修改程序重新编译。
A-De 2018-12-14
  • 打赏
  • 举报
回复
char *c= R"(姓名:小王
性别:男
年龄 : 13
)";
super_admi 2018-12-14
  • 打赏
  • 举报
回复
放文本文件里去吧。
赵4老师 2018-12-14
  • 打赏
  • 举报
回复
char *c =
"姓名:小王" "\r\n"
"性别:男" "\r\n"
"年龄:13" "\r\n";
zhouqunhai 2018-12-14
  • 打赏
  • 举报
回复
使用字符串数组吧
ckc 2018-12-14
  • 打赏
  • 举报
回复
char *c = "姓名:小王\r\n" "性别:男\r\n" " 年龄 : 13\r\n"; 这样也可以。 不用换行符是不行的,因为c需要程序员自己控制这个,源代码可以使用不同的换行符,然而编译出来的代码应该是一样的,所以需要你指定换行符 不想这样用可以搞一个数据文件,运行的时候把数据读进来。 数据文件还可以编译到目标代码中,这样看起来也很清爽 还可以用一些工具自动把原始数据格式化成需要的c初始化代码 方法多种多样,看你的喜好了
chenyanjiayan 2018-12-14
  • 打赏
  • 举报
回复
我觉得这是一种强迫症了
轻箬笠 2018-12-14
  • 打赏
  • 举报
回复
char buf[] = {"姓名:小王", "性别:男", "年龄:13"};
std::string str = combine(buf);
自己写个函数就可以了
ztenv 版主 2018-12-14
  • 打赏
  • 举报
回复
没有必要纠结这东西吧?
_G_M_000 2018-12-14
  • 打赏
  • 举报
回复
引用 9 楼 A-De 的回复:
引用 14 楼 早打大打打核战争 的回复:
#9的方法最接近楼主的要求,只是在高版本编译器上会有警告,强制类型转换一下就好了 char *c = (char *)R"(姓名:小王 性别:男 年龄 : 13 )";
正解,所有楼层中就9楼的答案最接近,然后求关于R的详细解释。 然后关于楼主为啥要犯这个强迫症呢,因为楼主有时候需要面对一大段文字,然后需要根据不同情况replace其中部分文字就可以了,有没有感觉这个跟Qt的信号槽有点相似呢,而且免除了各种\r\n的转义字符,各种“”各种++,多么清爽啊。
  • 打赏
  • 举报
回复
#9的方法最接近楼主的要求,只是在高版本编译器上会有警告,强制类型转换一下就好了
char *c = (char *)R"(姓名:小王
性别:男
年龄 : 13
)";
偷学者 2018-12-14
  • 打赏
  • 举报
回复
直接用 std::vector<std::vector<char>> 分开存放就好了
  • 打赏
  • 举报
回复
快去找编译器设计者决斗
_肆 2018-12-14
  • 打赏
  • 举报
回复
有办法截断换行,已经是仁至义尽了,算是一种编程语言固有的规则,这就好比你注释代码不想用//,让他自己识别哪个是注释哪个是代码,这无疑是否认编程语言本身
@风轻云淡_ 2018-12-13
  • 打赏
  • 举报
回复

#include <sstream>

stringstream ss;
ss << "姓名:小王" << endl;
ss << "性别:男" << endl;
ss << "年龄 : 13" << endl;

string tmp(ss.str());
const char* c = tmp.c_str();

cout << c << endl;

如果这样还不满意,那你只能找一个不用你输入换行就能自己打的那种,比较懂你的编译器了

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧