问题标签 [stringstream]

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

c++ - std::stringstream 从字符串中读取 int 和字符串

我正在用 C++ 编程,但不确定如何实现以下目标:

我正在将文件流复制到内存中(因为有人要求我这样做,我更喜欢从流中读取),然后尝试访问它的值以将它们存储到字符串和 int 变量中。

这是为了创建一个解释器。我将尝试解释的代码是(即):

这只是一个简单的示例代码。现在这些值将首先存储在“映射”结构中,稍后在“解释”所有内容时访问。要存储的值是:

int lnum // 行号

string cmd // 命令(PRINT 和 GOTO)

string exp // 表达式(在本例中为 A 和 10,但可以包含 (a*b)-c 之类的表达式)

问题给出了以下代码,我如何访问这些值并将它们存储在内存中?exp 字符串的大小也是可变的(可以只是一个变量或一个表达式),所以我不确定如何读取它并将其存储在字符串中。

代码:


我希望这很清楚。

谢谢您的帮助。

瓦莱里奥

0 投票
4 回答
20974 浏览

c++ - 我应该预先分配 std::stringstream 吗?

std::stringstream广泛使用在我的应用程序中构造字符串和错误消息。通常stringstreams是非常短寿命的自动变量。

这种用法会导致每个变量的堆重新分配吗?我应该从临时变量切换到类成员stringstream变量吗?

在后一种情况下,如何保留stringstream缓冲区?(我应该用足够大的字符串初始化它还是有更优雅的方法?)

0 投票
3 回答
33016 浏览

c++ - 如何使用 C++ 字符串流附加 int?

谁能告诉我或指向一个简单的示例,说明如何将 int 附加到包含单词“Something”(或任何单词)的字符串流中?

0 投票
8 回答
4186 浏览

c++ - 将多个单词提取到一个字符串变量

我想将两个或多个单词提取到一个字符串变量中。到目前为止,我已经阅读,似乎这是不可能的。如果是这样,还有什么办法呢?我想name在数字(年龄)之前获取所有字符。

我觉得使用 sscanf 最舒服,但我显然不能。

例如,我需要的是能够提取之前age的所有单词。

0 投票
4 回答
895 浏览

c++ - 使用 istringstream 处理可变长度的内存块

我正在尝试使用从一些内存istringstream中重新创建编码。wstring内存布局如下:

  1. 1 个字节表示 wstring 编码的开始。任意这是'!'。
  2. n 个字节,以文本格式存储字符串的字符长度,例如 0x31、0x32、0x33 将是“123”,即 123 个字符的字符串
  3. 1 字节分隔符(空格字符)
  4. n 个字节,它们是组成字符串的 wchars,其中 wchar_t 是每个 2 字节。

例如字节序列:

21 36 20 66 00 6f 00 6f 00

是“!6 foo”(使用点表示 char 0)

我所拥有的只是一个 char* 指针(我们称它为pData),指向内存块的开头,其中包含此编码数据。使用数据重构 wstring(“foo”)并将指针移动到编码数据末尾之后的下一个字节的“最佳”方式是什么?

我正在玩弄使用 istringstream 来允许我使用前缀字节、字符串的长度和分隔符。之后,我可以计算要读取的字节数并使用流的read()函数插入到适当调整大小的 wstring 中。问题是,我如何首先将这些内存放入 istringstream 中?可以尝试先构造一个字符串,然后将其传递给 istringstream,例如

但这不起作用,因为字符串在第一个空字节处被截断。或者,我可以使用字符串的其他构造函数来明确说明要使用多少字节:

len这有效,但前提是我事先知道是什么。鉴于数据是可变长度的,这很棘手。

这似乎是一个真正可以解决的问题。我的字符串和流的新手状态是否意味着我忽略了一个简单的解决方案?还是我用整个字符串方法吠叫错误的树?

0 投票
4 回答
6347 浏览

c++ - C++:字符串流有什么好处?

谁能告诉我一些在 c++ 中使用字符串流的实际示例,即使用流插入和流提取运算符输入和输出到字符串流?

0 投票
4 回答
3985 浏览

c++ - 有没有办法减少 ostringstream malloc/free 的?

我正在编写一个嵌入式应用程序。在某些地方,我经常使用 std::ostringstream,因为它对我的目的非常方便。但是,我刚刚发现性能受到极大影响,因为向流中添加数据会导致对 malloc 和 free 的大量调用。有什么办法可以避免吗?

我的第一个想法是使 ostringstream 静态并使用 ostringstream::set("") 重置它。但是,这无法完成,因为我需要这些函数是可重入的。

0 投票
3 回答
2282 浏览

c++ - 全局设置字符串流的精度

我在我的整个项目中使用 stringstream,它有 30 多个文件。我最近克服了一个由 stringstring 引起的问题,我将 double 解析为 stringstream 并且丢失了精度。所以现在我想为所有文件设置精度。有没有办法在全局范围内设置它,这样我就不需要在每个文件的任何地方进行更改。有人建议我看看是否可以使用语言环境。

请帮我解决这个问题,如果您有代码或任何代码链接,它将更有用。

0 投票
6 回答
10826 浏览

c++ - 在单个语句中将临时字符串流转换为 c_str()

考虑以下函数:

假设我想使用 stringstream 生成一个字符串并将其传递给这个函数。如果我想在一个声明中做到这一点,我可以尝试:

这给出了一个错误:“str()”不是“basic_ostream”的成员。好的,所以 operator<< 正在返回 ostream 而不是 ostringstream - 将其转换回 ostringstream 怎么样?

1)这个演员表安全吗?

现在有了这个,对于 operator<<("Value: ") 调用,它实际上是在调用 ostream 的 operator<<(void*) 并打印一个十六进制地址。这是错误的,我想要文本。

2) 为什么临时 std::ostringstream() 上的 operator<< 调用 ostream 运算符?当然临时有一种'ostringstream'而不是'ostream'?

我也可以强制执行正确的操作员呼叫!

这似乎有效并将“值:5”传递给 f()。

3)我现在依赖未定义的行为吗?演员阵容看起来很不寻常。


我知道最好的选择是这样的:

...但我对在一行中执行此操作的行为感兴趣。假设有人想做一个(可疑的)宏:

这个功能会如预期的那样吗?

0 投票
2 回答
5911 浏览

c++ - 如何在 C++ 中设置流的最大读取长度?

我正在将流中的数据读取到给定长度的 char 数组中,并且我想让读取的最大宽度足够大以适合该 char 数组。

我使用 char 数组的原因是我的规范的一部分是任何单个标记的长度都不能超过某个值,所以我为自己节省了一些构造函数调用。

我认为 width() 做了我想要的,但我显然错了......

编辑:我使用流提取运算符来执行提取,因为这些是纯文本文件,其值由空格分隔。