问题标签 [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_str”
这是我在网上找到的一个小型图书馆:
在我的代码中,我正在这样做:
现在,起初d
包含垃圾。然后我意识到我从函数中获取的 C 字符串在函数返回时被销毁,因为std::ostringstream
它是在堆栈上分配的。所以我补充说:
现在我可以从函数中获取我需要的文本。
我有两个问题:
我是否正确理解这一点?
后来我注意到
out
(类型std::ostringstream
)被分配了静态存储。这是否意味着该对象应该保留在内存中直到程序终止?如果是这样,那为什么不能访问字符串?
c++ - std::string 可以包含嵌入的空值吗?
对于常规 C 字符串,空字符'\0'
表示数据结束。
怎么样std::string
,我可以有一个嵌入空字符的字符串吗?
c++ - 如何判断 CString 是在堆还是栈上分配内存?
如何判断 MFC CString 是在堆还是堆栈上分配内存?我正在为 Windows Mobile/Windows CE 平台进行编译。
我正在从事其他人开发的项目,并且在某些情况下目睹了堆栈溢出。我试图弄清楚堆栈上分配的自定义 SQLite 记录集类(具有许多 CString 成员变量)是否导致堆栈溢出。
c++ - 反转 c 类型的字符串
这是我的代码:
所以这里叫它:
这是我的错误:
/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:第 7 行:1931 总线错误“$3”.out
有什么想法吗?提前致谢。
c - 如何在c中将时间转换为ac字符串?
我想在 .c 文件中的 .txt 文件中写入一些内容,但需要以当前时间戳为后缀命名该文件,就像 filename_2010_08_19_20_30 一样。所以我得先定义文件名char数组,自己处理文件名?把字符一个一个赋值?
有什么简单的方法可以做到这一点吗?
c - 在编译时确定#defined 字符串长度
我有一个C 程序(一个 Apache 模块,即程序经常运行),它将write()
通过套接字连接一个以 0 结尾的字符串,所以我需要知道它的长度。
字符串 #defined 为:
有没有比在运行时使用更好的方法strlen(POLICY)+1
(从而一次又一次地计算长度)?
预处理器指令,允许POLICY_LENGTH
在编译时设置?
c - 访问/修改结构中的字符串数组
假设我有以下代码:
这显然不起作用,但它应该显示我想要做什么。我将如何初始化、访问、打印等结构中的字符串数组?
c - 在 C 中,我可以像在 char 数组声明中初始化字符串一样,在指针声明中初始化字符串吗?
这两行代码是否达到了相同的结果?如果我在函数中有这些行,那么字符串是否在两种情况下都存储在堆栈中?除了不需要在第一行代码中声明空终止符之外,我是否有充分的理由使用一个而不是另一个?
c++ - 删除字符串时堆损坏
这是我的代码:
第一行读取字符串的长度。
第二行使用字符串长度创建一个新的字符数组(c-string)
第三行读取字符串(从文件中读取)
第四行在末尾添加一个 NULL。
第 5 行从 c 字符串中创建了一个 std::string。
第 6 行删除了 c-string (HEAP CORRUPTION HAPPENS HERE)
第 7 行返回了字符串,但由于出错,它从未到达这一点。
在第 6 行,我收到一个堆损坏错误:CRT 检测到应用程序在堆缓冲区结束后写入内存。
我的问题可能很明显,但为什么我会出现堆损坏?当我创建一个 std::string 时,它应该复制字符串,并且我应该可以安全地删除 c 字符串。
目前,我怀疑 std::string 在我删除它后试图访问它。
有任何想法吗?
syntax-error - .at(i) 上的编译错误,但 [i] 上没有
为什么会这样:
char SourceChar = Text.c_str()[Index];
编译,但是
char SourceChar = Text.c_str().at(Index);
才不是?有解决方法吗?