问题标签 [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.
c++ - 字符串流和法语语言环境 (French_France.1252)
此代码会将 1000 转换为字符串“1 000”,但 value_french[1] 的值是 -96 而不是 32,这是为什么呢?
如果我做
value_french[1] 的值为 32。错误似乎与 char 的符号有关,但为什么在进行转换时它只影响空格?
c++ - “覆盖”时出现Stringstream write()问题
目前,我有一个名为Data
. 我正在使用以下方法寻找字符串流的开头:
然后,我尝试将 2 个整数写入字符串流的前 8 个字节(以前,前 8 个字节设置为 0)
使用 Visual C++ 调试器并设置断点时,我可以看到dataLength
等于 12 和dataFlags
0,因此应该分别写入 12 和 0。
写完2个整数后,好像没有效果。然后我使用以下代码打印我的字符串流数据:
我可以看到我的数据的前 8 个字节仍然是 0,即使我只是用两个整数覆盖了前 12 个字节(其中第一个整数!= 0)。
为什么我的字符串流中的数据没有被正确覆盖?
c++ - stringstream 如何在内部工作?
我是在性能方面问的。stringstream 只是一个字符串/向量,因此写入它可能会导致其整个内容被复制到更大的内存块中,还是以更棘手的方式完成(例如,字符串列表或其他)?
c++ - 将数据从 fstream 复制到没有缓冲区的 stringstream?
无论如何我可以将数据从fstream
(文件)传输到stringstream
(内存中的流)吗?
目前,我正在使用缓冲区,但这需要双倍内存,因为您需要将数据复制到缓冲区,然后将缓冲区复制到字符串流,直到您删除缓冲区,数据才会在内存中重复。
有谁知道如何在不使用中间缓冲区的情况下将整个文件写入字符串流?
c++ - 从文件中读取令牌(复杂)
我有一个基本的标记化结构/算法。这很复杂,我希望我能简单地澄清一下,让您了解我设计中的“缺陷”。
类 ParserState
此设置的原因是如果发生语法错误,则能够报告行号。根据解析器的阶段/状态,我的程序中会发生不同的事情,这个 ParserState 的子类使用m_token
并nextToken
继续。 fetchToken
调用nextLine
ifm_buffer
为空,并将下一个标记放入其参数中:
问题是从 m_buffer 中删除的令牌没有被删除,并且每次调用都会读取相同的令牌nextToken()
。问题是m_buffer
可以修改,因此istringstream::str
在循环中调用。但这是我的问题的原因,据我所知,它无法解决,因此我的问题是:如何让stream >> token
从字符串流内部指向的字符串中删除某些内容?也许我不需要使用a stringstream
,而是在这种情况下使用更基本的东西(比如找到第一个空格并从字符串中删除第一个标记)?
谢谢十亿!
PS:任何改变我的函数/类结构的建议都是可以的,只要它们允许跟踪行号(所以没有完整的文件读入m_buffer
和类成员istringstream
,这是我在想要行号错误报告之前所拥有的)。
c++ - 将字符串流的内容传递给以 char* 作为参数的函数
我有一个将 ppm 文件(一种图片格式)写入磁盘的功能。它将文件名作为 char* 数组。在我的主函数中,我使用字符串流和 << 运算符组合了一个文件名。然后,我想将结果传递给我的 ppm 函数。我在其他地方看到过这个讨论,通常使用非常复杂的方法(许多中间转换步骤)。
我所做的显示在下面的代码中,其他人通常在许多步骤中使用临时变量做的棘手部分是(char*) (PPM_file_name.str().data())
. 这样做的目的是使用 .str() 从 stringstream PPM_file_name 中提取字符串,然后使用 .data() 获取指向其实际内容的指针(这是一个 const char*),然后将其转换为常规 (char*)。更完整的例子如下。
到目前为止,我发现以下工作正常,但这让我感到不安,因为通常当其他人以看似更复杂的方式完成某事时,这是因为这是一种更安全的方式。那么,谁能告诉我我在这里所做的是否安全以及它的便携性如何?
谢谢。
c++ - 从字符串流中输入值
是否有一个 while 循环允许我将 stringstream 的所有值输入到某个数据类型中?例如:
c++ - 忽略来自 stringstream 的值(如 sscanf 中的 %*f)
我正在尝试摆脱旧的不安全 C 函数,包括 sscanf()。现在我正在使用
我只需要其中的整数。有什么办法可以避免那些讨厌的虚拟变量?
提前致谢,祝您有美好的一天!
c++ - 从 std::string 中删除 NULL
我正在使用第三方代码,它有自己的 std::ostream operator<< 实现,来处理第三方的类型。我为此输出使用 stringstream - 例如:
此结构包含设置为 NULL 的指针成员。当使用 operator<< 并将 of 赋值str()
为字符串时,我看到(通过 gdb - print str
)有许多前导 '\000' 字符,然后是我需要的字符串数据。
我怎样才能修剪那些 NULL 以便只获得真实的而不是空的数据?
PS 确切的代码在 Windows VC++ 中运行良好...
谢谢你。
c++ - 在 C++ 中没有临时变量的情况下从 istream 读取 1 行到字符串流?
是否可以在不使用 C++ 中的临时字符串变量的情况下从输入流中读取一行并将其传递给字符串流?
我目前做这样的阅读(但我不喜欢临时变量line
):