首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用字符串的c_str()并分配给const*:只读位置的赋值

使用字符串的c_str()并分配给const*:只读位置的赋值
EN

Stack Overflow用户
提问于 2015-02-16 11:29:56
回答 1查看 921关注 0票数 0

我的问题是:我有一个指向常量char指针的常量指针(二维char数组,其中两个维度都是const)。我需要给这个数组分配C-字符串。我有一个std::vector of std::strings,我用c_str()来创建c_strings向量。现在我将这些C-字符串指针赋值给这个数组,但是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
src/rshell.cpp:45:44: error: assignment of read-only location ‘*(c_arr 
((sizetype)(((long unsigned int)i) * 8ul)))for (int i = 0; i < size1; i++) c_arr[i] = commands.at(i);

这是带有错误的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* Confusing as heck, let me explain!
 * char const* means pointer to a constant char
 * so char const* const means a const pointer to a const char
 * and char const* const* means a const pointer to a const char pointer!
 * (Read declarations from right to left to make it make sense -
 *  char const* = POINTER (*) to a CONST CHAR)
 */
char const* const* c_arr = new char*[size1];
for (int i = 0; i < size1; i++)
  c_arr[i] = commands.at(i); // line 38

这是字符串的向量到C-字符串部分,如果有帮助的话。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (tokenizer::iterator it = parse.begin(); it != parse.end(); it++)
  words.push_back(*it);

vector<const char*> commands;
// add string to c_string equiv return vector
for (vector<string>::iterator it = words.begin(); it != words.end(); it++) {
    commands.push_back(it->c_str());
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 11:43:23

由于commands是一个std::vector<const char *>,表达式&commands[0]将产生一个const char ** (也称为char const **),您可以很高兴地将它分配给char const * const *。所以除非你真的需要一份副本,否则你可以

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char const * const *c_arr = &commands[0];

请注意,这意味着c_arr只有在commands存在的情况下才是真正有用的(这反过来也只有在words中的std::string对象存在的情况下才是有用的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28548953

复制
相关文章
扫盲:”正则表达式”是什么?
我们先不解释什么是”正则表达式”,因为在本来就不明白的情况下,再去看一些专业的解释,会更加不明白。
星哥玩云
2022/06/06
6140
全球邮箱正则表达式是什么_验证邮箱的正则表达式
最近做外贸,涉及到邮箱的匹配,网上查了一下,没有合适的,因为设计到各种语言,各种格式的邮箱,就尝试自己写了,效果还可以。
全栈程序员站长
2022/09/28
9010
宝塔面板是什么?宝塔面板的作用和功能是什么?
什么是宝塔面板?宝塔面板的作用和功能是什么?宝塔面板是一款服务器管理软件,支持Windows和Linux系统,可以通过Web端轻松管理服务器,提升运维效率,该软件内置了创建管理网站、FTP、数据库、可视化文件管理器、可视化软件管理器等等。安装宝塔的目的就是更简单的管理网站服务器。解决对服务器技术不太懂的或者想用更简单的方法来管理服务器的人们。为了更好的服务这些群体,宝塔会在软件立项层面就引入交互体验。有Linux和Windows版本的。主机教程网下面给大家介绍一下。
主机教程网2bcd.com
2022/10/20
8.2K0
功能点到底是什么?
功能点(Function Points)是度量软件规模的一个标准度量单元。简单的说, 一个软件的大小可以通过交付给用户的功能点数来度量,就如一间房子的大小通过提供给用户的建筑面积或使用面积来度量一样。功能点方法是是从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计。功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行成为主流的软件规模度量方法。功能点方法进入国内也有近15年的时间。在2013年由工业和信息化部发布的行业标准《软件研发成本度量规范》中也推荐使用功能点方法进行软件规模度量,进而对软件项目工作量、工期、成本进行估算。
嘉量云 政企软件造价专家
2021/07/22
2.3K0
java之学习正则表达式的替换功能
结果示意图 A:正则表达式的替换功能 * String类的功能:public String replaceAll(String regex,String replacement) * B:案例演示 * 正则表达式的替换功能 * 一个字符串“wo65434ai5767fen98xiang7978ba” * 替换中间的数字返回全部的字母“woaifenxiangba” 案例代码、 package com.ifenx8.regex; public class Demo_ReplaceAll { /*
吾爱乐享
2018/07/13
5160
对websocket的功能封装,构造函数是什么
url就是要连接的websocket的地址,那么可选的protocols是什么呢?protocols可以传入单个协议字符串或者是协议字符串数组。它指的是 WebSocket 服务器实现的子协议。
用户8671053
2021/09/24
5400
批量添加题目功能(正则表达式的使用案例)
右边的题目就是一个组件,根据不同的类型进行显示,这个组件这里不做谈论。这里要做的就是根据左边的文本内容,解析成一个个对象的形式,传入右边的组件进行渲染。
Daotin
2020/11/09
9360
SPSS是什么?SPSS软件的功能有哪些?
SPSS是SPSS总部于1984年推出的统计分析软件。其意义是开拓SPSS微型计算机系列产品的发展方向,极大地扩展其应用范围,并使其能够迅速应用于自然科学,技术科学和社会科学等领域。随着SPSS产品服务领域的扩大和服务深度的增加,英文名称在2000年正式更改为“统计产品和服务解决方案”。
数据前沿
2020/06/15
3.5K0
SPSS是什么?SPSS软件的功能有哪些?
【说站】python正则表达式中的分组是什么
分组的右侧可以通过分组的编号引用分组匹配的子串。而且我们可以把分组看作一个整体,分组后面可以加量词,此时量词的作用范围就是整个分组。
很酷的站长
2022/11/24
4840
移动应用性能监控是什么?其功能是什么?
对于某个公司的应用系统开发者来说,如果应用系统的性能不过关的话,就会影响到后续的正常使用,所以需要对应用进行性能的监控,如果想对应用进行性能监控的话,需要借助移动应用性能监控的帮忙,下面来为大家具体介绍移动应用性能监控的相关内容,包括其概念以及主要功能。
用户8715145
2021/12/01
7970
堡垒机的主要功能是什么?堡垒机的作用原理是什么?
互联网技术正处于不断更新迭代的过程中,而技术带动生产力的进步,因此越来越多行业的发展已经完全依赖于计算机和网络技术。这就造成了一个问题:互联网安全问题如何解决?我们经常在一些新闻中看到某某公司的信息被泄露,而这种例子已经屡见不鲜。如果是企业的重要信息,则会造成巨大的损失,甚至让企业的发展停滞不前。因此很多企业都会选择堡垒机来保证内部信息的安全。那么堡垒机的主要功能是什么?一起来了解一下吧!
用户8715145
2021/10/15
3.2K0
【说站】mysql中正则表达式是什么
最简单的正则表达式是一个普通的字符串。比如正则表达式hello只匹配字符串hello。
很酷的站长
2022/11/24
7250
【说站】mysql中正则表达式是什么
web端功能测试怎么测_web的主要功能是什么
链接是web应用系统的一个很重要的特征,主要是用于页面之间切换跳转,指导用户去一些不知道地址的页面的主要手段,链接测试一般关注三点:
全栈程序员站长
2022/09/19
5530
CleanMyMac是什么软件?有哪些功能
你知道CleanMyMac是什么吗?它的字面意思为“清理我的Mac”,作为软件,那就是一款Mac清理工具,Mac OS X 系统下知名系统清理软件,是数以万计的Mac用户的选择。它可以流畅地与系统性能相结合,只需简单的步骤就可以节省硬盘空间,提高电脑的速度,时刻保持电脑的清洁和健康,监视和优化Mac的性能。
用户7442547
2023/02/25
2.1K0
java 三大框架_java的三大框架是什么,功能各是什么
常说的三大框架指:SSH,即:Spring、62616964757a686964616fe59b9ee7ad9431333365653764Struts、Hibernate。
全栈程序员站长
2022/09/08
6190
java 三大框架_java的三大框架是什么,功能各是什么
堡垒机设备是什么 堡垒机设备的功能
堡垒机是一种是防护外来攻击,在网络中提前预警作用的一个网络安全设备。通过利用不同的科学技术去监测网络里的所有服务器、设备数据,从而可以起到安全防护行为,提前预警,方便快速地处理相关问题。下来就堡垒机设备是什么等问题给大家详细介绍下。
用户8715145
2021/10/21
1K0
TiDB 6.0 的「元功能」:Placement Rules in SQL 是什么?
对一款分布式数据库而言,数据如何分散存储在不同节点永远是个有趣的话题。你是否有时会期望能具体控制数据具体存储在哪些节点?
PingCAP
2022/04/20
4530
java之学习正则表达式的分组功能及案例
结果示意图 正则表达式的分组功能 正则表达式的分组功能 * 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: 1 ((A)(B(C))) 2 (A 3 (B(C)) 4 (C) 组零始终代表整个表达式。 B:案例演示 a:切割 需求:请按照叠词切割: “feqqqnxggggggianssssgbe”; b:替换 需求:我我….我…我.要…要要…要学….学学..学.编..编编.编.程.程.程..程 将字符串还原成:“我要学编程
吾爱乐享
2018/07/13
1K0
域名服务dns的主要功能是什么 IP地址转换的好处是什么
说起网站很多人都十分熟悉,因为几乎都浏览过各种新闻网站、购物网站、游戏网站等,但对这些网站如何建设起来以及域名服务dns的主要功能是什么却毫无了解。网站的建设首先是需要一个域名,在域名的基础上构建网站,比如网站的主页,网站的各个模块等,而网站还会为了便于不同网络的用户在浏览的时候方便,采用dns功能进行解析,使得可以实现快速访问。
用户8715145
2021/11/02
2.9K0
CleanMyMac X是什么软件及功能介绍
CleanMyMac是MacPaw公司研发的Mac清理工具,具有很多功能。在选购电脑清理软件之前,确实需要了解某些程序是否安全。在我们的使用中,它不仅可以清理垃圾,而且对我们的 Mac 也不构成任何风险。其次,该应用程序也上架在 Mac App Store,Apple 已对该应用程序进行了审核,并没有发现任何可能对消费者构成风险的错误捆绑或恶意软件。
用户7442547
2022/07/30
9030

相似问题

这个正则表达式的功能是什么?

20

下面的正则表达式中'@‘符号的功能是什么

12

的功能是什么?

23

功能和功能的区别是什么?

12

“真正的”功能是什么?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文