问题标签 [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.

0 投票
4 回答
5493 浏览

c++ - 从函数返回“c_str”

这是我在网上找到的一个小型图书馆:

在我的代码中,我正在这样做:

现在,起初d包含垃圾。然后我意识到我从函数中获取的 C 字符串在函数返回时被销毁,因为std::ostringstream它是在堆栈上分配的。所以我补充说:

现在我可以从函数中获取我需要的文本。

我有两个问题:

  1. 我是否正确理解这一点?

  2. 后来我注意到out(类型std::ostringstream)被分配了静态存储。这是否意味着该对象应该保留在内存中直到程序终止?如果是这样,那为什么不能访问字符串?

0 投票
4 回答
21874 浏览

c++ - std::string 可以包含嵌入的空值吗?

对于常规 C 字符串,空字符'\0'表示数据结束。

怎么样std::string,我可以有一个嵌入空字符的字符串吗?

0 投票
1 回答
943 浏览

c++ - 如何判断 CString 是在堆还是栈上分配内存?

如何判断 MFC CString 是在堆还是堆栈上分配内存?我正在为 Windows Mobile/Windows CE 平台进行编译。

我正在从事其他人开发的项目,并且在某些情况下目睹了堆栈溢出。我试图弄清楚堆栈上分配的自定义 SQLite 记录集类(具有许多 CString 成员变量)是否导致堆栈溢出。

0 投票
3 回答
981 浏览

c++ - 反转 c 类型的字符串

这是我的代码:

所以这里叫它:

这是我的错误:

/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:第 7 行:1931 总线错误“$3”.out

有什么想法吗?提前致谢。

0 投票
3 回答
2503 浏览

c - 如何在c中将时间转换为ac字符串?

我想在 .c 文件中的 .txt 文件中写入一些内容,但需要以当前时间戳为后缀命名该文件,就像 filename_2010_08_19_20_30 一样。所以我得先定义文件名char数组,自己处理文件名?把字符一个一个赋值?

有什么简单的方法可以做到这一点吗?

0 投票
4 回答
24713 浏览

c - 在编译时确定#defined 字符串长度

我有一个C 程序(一个 Apache 模块,即程序经常运行),它将write()通过套接字连接一个以 0 结尾的字符串,所以我需要知道它的长度。

字符串 #defined 为:

有没有比在运行时使用更好的方法strlen(POLICY)+1(从而一次又一次地计算长度)?

预处理器指令,允许POLICY_LENGTH在编译时设置?

0 投票
3 回答
3510 浏览

c - 访问/修改结构中的字符串数组

假设我有以下代码:

这显然不起作用,但它应该显示我想要做什么。我将如何初始化、访问、打印等结构中的字符串数组?

0 投票
3 回答
20461 浏览

c - 在 C 中,我可以像在 char 数组声明中初始化字符串一样,在指针声明中初始化字符串吗?

这两行代码是否达到了相同的结果?如果我在函数中有这些行,那么字符串是否在两种情况下都存储在堆栈中?除了不需要在第一行代码中声明空终止符之外,我是否有充分的理由使用一个而不是另一个?

0 投票
6 回答
2850 浏览

c++ - 删除字符串时堆损坏

这是我的代码:

第一行读取字符串的长度。
第二行使用字符串长度创建一个新的字符数组(c-string)
第三行读取字符串(从文件中读取)
第四行在末尾添加一个 NULL。
第 5 行从 c 字符串中创建了一个 std::string。
第 6 行删除了 c-string (HEAP CORRUPTION HAPPENS HERE)
第 7 行返回了字符串,但由于出错,它从未到达这一点。

在第 6 行,我收到一个堆损坏错误:CRT 检测到应用程序在堆缓冲区结束后写入内存。

我的问题可能很明显,但为什么我会出现堆损坏?当我创建一个 std::string 时,它应该复制字符串,并且我应该可以安全地删除 c 字符串。

目前,我怀疑 std::string 在我删除它后试图访问它。

有任何想法吗?

0 投票
1 回答
70 浏览

syntax-error - .at(i) 上的编译错误,但 [i] 上没有

为什么会这样:

char SourceChar = Text.c_str()[Index]; 编译,但是

char SourceChar = Text.c_str().at(Index); 才不是?有解决方法吗?