问题标签 [c-str]

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 回答
3173 浏览

c++ - c_str() 与 data() 在返回类型方面

在 C++11 之后,我想到了c_str()data() .

C++17 为后者引入了一个重载,它返回一个非常量指针(reference,我不确定它是否完全更新了 C++17):

c_str()只返回一个常量指针:

为什么这两种方法在 C++17 中有所不同,尤其是在 C++11 是使它们同质化的时候?换句话说,为什么只有一个方法重载,而另一个没有?

0 投票
2 回答
186 浏览

c++ - c_str() 或 reinterpret_cast 是否更适合处理二进制文件?

我需要在程序中处理二进制文件,我已经看到使用了 reinterpret_cast 以及 c_str()。

这是使用 c_str() 的代码片段:

这是使用 reinterpret_cast 的代码片段:

当我写入使用 reinterpret_cast 的二进制文件时,我得到了乱码......当我将数据读回我的程序时,这是有道理的。但是,当我使用 c_str() 时,数据在我写入的文件中是有意义的(没有乱码)。

而且,在使用 c_str() 写入文件后,我可以使用 getline 或 >> 轻松检索数据:

所以,我的问题是,哪个更适合用于二进制文件:reinterpret_cast 还是 c_str()?为什么?

就个人而言,似乎 c_str() 更好......

谢谢你们 :)

0 投票
1 回答
329 浏览

c++ - 在 C++ mfc 中格式化浮点数

我用VS2010在windows 7下搭建了一个MFC程序,想在生成的报表中格式化float数据。

我曾尝试使用 %f,但报告中显示了“%f”。

预期成绩:

通过, 1.2, 3.4, 5.67

实际结果:

通过,%f,%f,%f

0 投票
2 回答
98 浏览

c++ - C ++:为什么这个字符串输入失败而另一个没有

我从朋友那里得到了这个问题

我的第一个观察是,当传入的单词数超过 3 个单词riddle()时,该函数不会产生垃圾。input我仍在试图了解为什么它在第一种情况下失败,而不是在第二种情况下。不管怎样,我觉得分享这个很有趣。

0 投票
0 回答
105 浏览

c++ - 字符串大小函数的奇怪行为还是我做错了什么?

我得到错误的std::string尺寸值。

输出是:

0 投票
1 回答
102 浏览

c++ - c_str() 只读取我的字符串的一半,为什么?我怎样才能解决这个问题?是字节问题吗?

我正在编写一个客户端程序和服务器程序。在服务器程序上,为了将结果写回客户端,我必须将字符串转换为 const char* 以将其放入 const void* 变量中以使用 write() 函数。当我检查时,字符串本身正在输出正确的结果,但是当我对字符串使用 c_str() 函数时,它只输出到字符串中的第一个变量。我提供了一些代码供参考(不确定这是否有意义)。

我已经尝试了各种不同的方法来调整字符串,但还没有任何效果。

以下是变量的声明方式:

这是表的结构:

下面是有问题的代码片段,首先更新字符串变量 final,使用文本以及生成的字符串变量:

0 投票
4 回答
96 浏览

c++ - 你能安全地从它的 c_str() const char* 中获取一个指向字符串的指针吗?

我有一个 const char 指针,我知道它肯定来自一个字符串。例如:

在我的情况下,我知道 myCstring 来自一个字符串,但我不再有权访问该字符串(我从函数调用中收到了 const char*,我无法修改函数的参数列表)。

鉴于我知道 myCstring 指向现有字符串的内容,是否有任何方法可以安全地访问它源自的父字符串的指针?例如,我可以做这样的事情吗?

我担心的是,字符串的内容可能无法保证存储在某些或所有平台等的连续内存中。

0 投票
2 回答
168 浏览

c - strchr 和 strrchr 返回相同的结果

出于某种原因,无论我尝试strchr还是strrchr,我都会返回相同的值。我不知道为什么。

这是给我带来麻烦的代码段:

输入是Jane Austen, 6,我试图将它分成两个字符串:一个在逗号之前,一个在逗号之后。但是,我使用strrchr(input, ',');orstrchr(input, ',');似乎毫无意义,因为我的输出是 ALWAYS , 6。有人可以解释为什么吗?

0 投票
1 回答
128 浏览

c++ - Boost.Program_Options:为什么 options_description_easy_init::operator() 没有 std::string 的重载?

考虑这个 MCVE:

我正在尝试编写一个便利函数,以在将类似选项插入options_description对象时减少 C&P 代码的数量(原始代码使用为简单起见已删除的通知程序,但添加了更多样板文件)。令我惊讶的是,没有options_description_easy_init::operator()接受的重载std::string,因此该示例无法编译

虽然我可以通过调用 for 循环和.c_str()在for 循环内轻松地使示例工作,但这当然是危险的。为什么 boost 开发者遗漏了如此重要的过载?他们为什么不首先用作论据?kvconst std::string&

我怎样才能让这段代码在没有 的情况下工作.c_str()?没有迹象表明指针内存将在内部复制(无论如何这会很奇怪),我真的不想回到过去并自己管理内存:-)

0 投票
3 回答
126 浏览

c++ - 指向 std::string 中 c_str 函数的指针的生命周期

首先列出的代码如下。

运行它,结果如下。(Linux gcc)

cs = 123456
cs = 123456

所以,我不知道为什么在s 被销毁后cs指针是有效的。换句话说,指向 std::string 中 c_str 函数的指针的生命周期。