问题标签 [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.
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() 更好......
谢谢你们 :)
c++ - 在 C++ mfc 中格式化浮点数
我用VS2010在windows 7下搭建了一个MFC程序,想在生成的报表中格式化float数据。
我曾尝试使用 %f,但报告中显示了“%f”。
预期成绩:
通过, 1.2, 3.4, 5.67
实际结果:
通过,%f,%f,%f
c++ - C ++:为什么这个字符串输入失败而另一个没有
我从朋友那里得到了这个问题
我的第一个观察是,当传入的单词数超过 3 个单词riddle()
时,该函数不会产生垃圾。input
我仍在试图了解为什么它在第一种情况下失败,而不是在第二种情况下。不管怎样,我觉得分享这个很有趣。
c++ - 字符串大小函数的奇怪行为还是我做错了什么?
我得到错误的std::string
尺寸值。
输出是:
c++ - c_str() 只读取我的字符串的一半,为什么?我怎样才能解决这个问题?是字节问题吗?
我正在编写一个客户端程序和服务器程序。在服务器程序上,为了将结果写回客户端,我必须将字符串转换为 const char* 以将其放入 const void* 变量中以使用 write() 函数。当我检查时,字符串本身正在输出正确的结果,但是当我对字符串使用 c_str() 函数时,它只输出到字符串中的第一个变量。我提供了一些代码供参考(不确定这是否有意义)。
我已经尝试了各种不同的方法来调整字符串,但还没有任何效果。
以下是变量的声明方式:
这是表的结构:
下面是有问题的代码片段,首先更新字符串变量 final,使用文本以及生成的字符串变量:
c++ - 你能安全地从它的 c_str() const char* 中获取一个指向字符串的指针吗?
我有一个 const char 指针,我知道它肯定来自一个字符串。例如:
在我的情况下,我知道 myCstring 来自一个字符串,但我不再有权访问该字符串(我从函数调用中收到了 const char*,我无法修改函数的参数列表)。
鉴于我知道 myCstring 指向现有字符串的内容,是否有任何方法可以安全地访问它源自的父字符串的指针?例如,我可以做这样的事情吗?
我担心的是,字符串的内容可能无法保证存储在某些或所有平台等的连续内存中。
c - strchr 和 strrchr 返回相同的结果
出于某种原因,无论我尝试strchr
还是strrchr
,我都会返回相同的值。我不知道为什么。
这是给我带来麻烦的代码段:
输入是Jane Austen, 6
,我试图将它分成两个字符串:一个在逗号之前,一个在逗号之后。但是,我使用strrchr(input, ',');
orstrchr(input, ',');
似乎毫无意义,因为我的输出是 ALWAYS , 6
。有人可以解释为什么吗?
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 开发者遗漏了如此重要的过载?他们为什么不首先用作论据?k
v
const std::string&
我怎样才能让这段代码在没有 的情况下工作.c_str()
?没有迹象表明指针内存将在内部复制(无论如何这会很奇怪),我真的不想回到过去并自己管理内存:-)
c++ - 指向 std::string 中 c_str 函数的指针的生命周期
首先列出的代码如下。
运行它,结果如下。(Linux gcc)
cs = 123456
cs = 123456
所以,我不知道为什么在s 被销毁后cs指针是有效的。换句话说,指向 std::string 中 c_str 函数的指针的生命周期。