问题标签 [c-strings]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么在 c++ 中使用 c 字符串?
现在有什么好的理由在 C++ 中使用 C 字符串吗?我的教科书在某些时候在示例中使用了它们,我真的觉得使用 std::string 会更容易。
c - 为什么写入用字符串文字初始化的“char *s”而不是“char s[]”时会出现分段错误?
以下代码在第 2 行收到 seg 错误:
虽然这工作得很好:
使用 MSVC 和 GCC 测试。
c++ - 你如何将 CString 和 std::string std::wstring 相互转换?
CString
非常方便,同时std::string
更兼容 STL 容器。我正在使用hash_map
. 但是,hash_map
不支持CString
s 作为键,所以我想将 s 转换CString
为std::string
.
编写CString
散列函数似乎需要很多时间。
我怎样才能做到这一点?
我对吗?
编辑:
这里有更多问题:
我怎样才能从wstring
to转换,CString
反之亦然?
这有什么问题吗?
此外,我怎样才能从std::wstring
to转换,std::string
反之亦然?
mysql - MYSQL_ROW 和 row[0] 到字符串类型?
使用 MYSQL C API 查询结果时。结果作为MYSQL_ROW
类型返回,根据 MYSQL C API 文档,我可以轻松地printf("%s", row[0])
. 但是,如果我想将 的内容传输row[0]
到字符串或 char* 中怎么办?
c++ - 为什么 c_str() 打印字符串两次?
所以......当我去的时候:
我得到:
但是当我去的时候:
我得到:
为什么?
c - 将 char** 转换为 char* 或 char
我有一个旧程序,其中使用了一些库函数,但我没有那个库。
所以我正在使用 c++ 库编写该程序。在那个旧代码中,有一些函数是这样调用的
*string = newstrdup("这里有一些字符串");
字符串变量被声明为 char **string;
他可能在那个名为“newstrdup”的函数中做什么?我尝试了很多东西,但我不知道他在做什么......谁能帮忙
c - strtol、strtod 不安全吗?
似乎strtol()
并strtod()
有效地允许(并强制)你抛弃字符串中的常量:
上面,我自己没有进行任何演员表。但是,strtol()
基本上将 myconst char *
放入一个char *
for me 中,没有任何警告或任何东西。(事实上,它不允许你键入bar
as a const char *
,因此会强制进行不安全的类型更改。)这不是很危险吗?
c - char 数组与 char 指针
使用recv通过套接字接收数据时,我注意到:
我收到
消息
“mesg”是我发送的,附加了一些随机字符。
如果我使用
相反,我收到
消息
所以没有随机的东西附加到我的字符串中。我发现如果我使用 char[5] 代替它也可以,但我真的不明白为什么。malloc(4) 真的分配了 5 个字节,第五个是 NUL 吗?
c - sprintf(buffer, "%s [...]", buffer, [...]) 安全吗?
我看到在我正在处理的一些代码中使用这种模式连接到一个字符串:
我相当肯定它是不安全的 C。你会注意到buffer
它既是输出又是第一个输入。
除了缓冲区溢出的明显可能性之外,我相信不能保证缓冲区在函数的开始和结束之间不会改变(即,不能保证缓冲区的状态在函数的执行)。sprintf 的签名还指定目标字符串是restrict
ed。
我还记得一篇关于memcpy 中投机性写作的报告,我看不出为什么某些 C 库可能会在 sprintf 中做同样的事情。当然,在这种情况下,它将写入其源。那么这种行为安全吗?
仅供参考,我建议:
替换这个。
c - 写入 c 字符串
我的代码段错误,我不知道为什么。
gdb 调试器告诉我,问题出在第 6 行,我想将一个字符存储到 c 字符串中(如果我使用左值指针解引用,这是同样的问题。)这就是他所说的:
我正在从 K&R-C 书中学习,这是第 2.8 章中的简化示例(删除功能)。我不知道问题出在哪里。