问题标签 [stdstring]
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++ - 为什么 std::fstream 类不采用 std::string?
这不是一个设计问题,真的,虽然看起来很像。(嗯,好吧,这是一个设计问题)。我想知道的是为什么 C++std::fstream
类不在std::string
其构造函数或开放方法中采用 a。每个人都喜欢代码示例,所以:
这让我一直在处理文件。C++ 库肯定会std::string
尽可能使用吗?
c++ - 如何在 C++ 中将 int 附加到字符串?
我希望它打印出来Player 4
。
以上显然是错误的,但它显示了我在这里尝试做的事情。有没有一种简单的方法可以做到这一点,还是我必须开始添加新的包含?
c++ - C++:如何将 fprintf 结果作为 std::string 不带 sprintf
我正在使用一个用 C++ 实现的开源 UNIX 工具,我需要更改一些代码来让它做我想做的事情。我想做最小的改变,希望我的补丁在上游被接受。首选可在标准 C++ 中实现且不会创建更多外部依赖项的解决方案。
这是我的问题。我有一个 C++ 类——我们称之为“A”——它目前使用 fprintf() 将其高度格式化的数据结构打印到文件指针。在它的打印函数中,它还递归地调用了几个成员类的相同定义的打印函数(“B”就是一个例子)。还有另一个类 C 有一个成员 std::string "foo",需要将其设置为 A 实例的 print() 结果。将其视为 A 的 to_str() 成员函数。
在伪代码中:
我应该提到 C 相当稳定,但 A 和 B(以及 A 的其他依赖项)处于不断变化的状态,因此所需的代码更改越少越好。当前的 print(FILE* F) 接口也需要保留。我考虑了几种实现 A::to_str() 的方法,每种方法都有优点和缺点:
将对 fprintf() 的调用更改为 sprintf()
- 我不必重写任何格式字符串
- print() 可以重新实现为: fprint(f, this.to_str());
- 但我需要手动分配 char[]s,合并很多 c 字符串,最后将字符数组转换为 std::string
尝试在字符串流中捕获 a.print() 的结果
- 我必须将所有格式字符串转换为 << 输出格式。有数百个 fprintf() 可以转换:-{
- print() 必须重写,因为我知道没有标准方法可以从 UNIX 文件句柄创建输出流(尽管这个人说这可能是可能的)。
使用 Boost 的字符串格式库
- 更多的外部依赖。呸。
- Format 的语法与 printf() 的不同之处足以令人讨厌:
printf(format_str, args) -> cout << boost::format(format_str) % arg1 % arg2 % etc
使用 Qt 的QString::asprintf()
- 不同的外部依赖。
那么,我是否已经用尽了所有可能的选择?如果是这样,你认为哪个是我最好的选择?如果没有,我忽略了什么?
谢谢。
c++ - C++ 字符串:UTF-8 还是 16 位编码?
我仍在尝试决定我的(家庭)项目是否应该使用UTF-8字符串(根据 std::string 在必要时使用额外的 UTF-8 特定函数实现)或一些 16 位字符串(实现为 std: :wstring)。该项目是一种编程语言和环境(如 VB,它是两者的结合)。
有一些愿望/限制:
- 如果它可以在有限的硬件上运行,比如内存有限的计算机,那就太酷了。
- 我希望代码在 Windows、Mac 和(如果资源允许)Linux 上运行。
- 我将使用wxWidgets作为我的 GUI 层,但我希望与该工具包交互的代码限制在代码库的一个角落(我将拥有非 GUI 可执行文件)。
- 在处理用户可见文本和应用程序数据时,我想避免使用两种不同类型的字符串。
目前,我正在使用 std::string,目的是仅在必要时使用 UTF-8 操作函数。它需要更少的内存,并且似乎是许多应用程序的发展方向。
c++ - 你如何构造一个带有嵌入 null 的 std::string?
如果我想构造一个带有如下行的 std::string :
我想在结果字符串中包含三个字符(a,null,b),我只得到一个。什么是正确的语法?
c++ - 使用 std::string 时出现 bad_alloc 错误
我目前正在开发一个依赖于我提供文件路径的项目(例如。C:\Path.pth
)。现在,我昨天打电话给我std::string
,一切正常:
但现在它不起作用。它抛出一个bad_alloc
. 似乎 ' \
' 字符是问题所在。我什至尝试将\x5C
其用作它的 ascii 值,但结果相同。
现在,我的问题是,是否有可能我搞砸了一些#define
、一些编译器选项或其他可能导致这种情况的“非代码”?我正在使用 VS 2005。
任何帮助将非常感激
皮埃尔BdR
.. 这听起来很有可能。或者至少,它必须:P
由于没有人提到某种 /SetStringCharSize:2bit-compiler 选项,我认为可以安全地假设我的代码必须在某处搞砸一些东西,而且它不仅仅是一个愚蠢的编译器选项(或类似的)是错误的。 .
c++ - if(str1==str2) 与 if(str1.length()==str2.length() && str1==str2)
我在另一个人的代码中看到了第二个,我想这种长度比较是为了提高代码效率。它用于具有特定字典的脚本语言的解析器:单词长度为 4 到 24 个字母,平均为 7-8 个小写字母,字母表包括 26 个拉丁字母加上“@”、“$”和“_”。
长度比较用于转义 == 运算符处理 STL 字符串,这显然比简单的整数比较需要更多时间。但同时给定字典中的首字母分布比单词大小的分布更宽,因此比较字符串的两个首字母通常比字符串的大小更经常不同。这使得长度比较变得不必要。
我已经进行了一些测试,这就是我发现的:在测试两个随机字符串比较数百万次时,第二种方法要快得多,所以长度比较似乎很有帮助。但是在一个工作项目中,它在调试模式下运行得更慢,而在发布模式下运行速度不够快。
所以,我的问题是:为什么长度比较可以加快比较速度,为什么可以减慢速度?
UPD:我也不喜欢第二种方式,但我想这样做是有原因的,我想知道这是什么原因。
UPD2:说真的,问题不在于如何做到最好。在这种情况下,我什至不再使用 STL 字符串。难怪长度比较是不必要的和错误的等等。奇怪的是 - 它确实倾向于在某个测试中稍微好一点。这怎么可能?
c++ - C++ std::string 构造函数
对此的任何想法将不胜感激:
我现在希望这两个字符串是独立的,即我可以将“, world”附加到 s2 并且 s1 仍然会读取“hello”。这是我在 windows 和 linux 上找到的,但在 HP_UX 机器上运行代码似乎 s2 和 s1 是同一个字符串,所以修改 s2 会更改 s1。
这听起来绝对疯狂吗,有人见过类似的东西吗?
c++ - 如何连接 std::string 和 int
我认为这将非常简单,但它提出了一些困难。如果我有
我如何将它们组合成一个字符串"John21"
?
c++ - 如何将 C++ 字符串转换为 int?
可能重复:
如何在 C++ 中将字符串解析为 int?
如何将 C++ 字符串转换为 int?
假设您希望字符串中包含实际数字(例如,“1”、“345”、“38944”)。
另外,假设您没有 boost,并且您真的想以 C++ 方式进行,而不是使用笨拙的旧 C 方式。