Questions tagged «truncation»

22
截断长字符串的智能方法
有没有人比显而易见的解决方案/库更复杂的解决方案/库,用于使用JavaScript截断字符串并在末尾添加省略号: if (string.length > 25) { string = string.substring(0, 24) + "..."; }

7
SQL Server在存储过程中默默地截断varchar
根据这个论坛的讨论,SQL Server(我使用的是2005,但我收集到的信息也适用于2000和2008)varchar,即使您直接使用INSERT实际上会导致错误。例如。如果我创建此表: CREATE TABLE testTable( [testStringField] [nvarchar](5) NOT NULL ) 然后当我执行以下命令时: INSERT INTO testTable(testStringField) VALUES(N'string which is too long') 我收到一个错误: String or binary data would be truncated. The statement has been terminated. 大。数据完整性得以保留,并且调用者知道这一点。现在让我们定义一个存储过程来插入它: CREATE PROCEDURE spTestTableInsert @testStringField [nvarchar](5) AS INSERT INTO testTable(testStringField) VALUES(@testStringField) GO 并执行它: EXEC spTestTableInsert @testStringField = N'string …

3
不同编译器中C ++和C之间无符号位域整数表达式的截断不一致
编辑2: 当以前驻留在C ++源文件中但完全移入C文件的函数开始返回不正确的结果时,我正在调试一个奇怪的测试失败。下面的MVE允许重现GCC问题。但是,当我一时兴起,用Clang(后来又用VS)编译示例时,得到了不同的结果!我无法弄清楚是将其视为编译器之一中的错误,还是C或C ++标准允许的未定义结果的体现。奇怪的是,没有一个编译器给我有关该表达式的任何警告。 罪魁祸首是这样的表达: ctl.b.p52 << 12; 在这里,p52键入为uint64_t;它也是工会的一部分(见control_t下文)。移位操作不会丢失任何数据,因为结果仍然适合64位。但是,如果我使用C编译器,那么GCC决定将结果截断为52位!使用C ++编译器,将保留所有64位结果。 为了说明这一点,下面的示例程序用相同的主体编译了两个函数,然后比较了它们的结果。c_behavior()放在C源文件和cpp_behavior()C ++文件中,并main()进行比较。 带有示例代码的存储库:https : //github.com/grigory-rechistov/c-cpp-bitfields 标头common.h定义64位宽位域和整数的并集,并声明两个函数: #ifndef COMMON_H #define COMMON_H #include <stdint.h> typedef union control { uint64_t q; struct { uint64_t a: 1; uint64_t b: 1; uint64_t c: 1; uint64_t d: 1; uint64_t e: 1; uint64_t f: 1; uint64_t g: …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.