【发布时间】:2015-09-09 16:54:04
【问题描述】:
我正在从文件中的结构中读取字符串,其中每个字符串具有固定长度,并带有'\0' 填充。如果存储的字符串需要整个长度,则它们不是以零结尾的。
我目前正在用这样的方式构建std::strings:
// char MyString[1000];
std::string stdmystring(MyString, ARRAYSIZE(MyString));
但是,这也会复制填充。我现在可以修剪字符串,但有没有一种优雅而快速的方法来防止复制?
速度比空间更重要,因为它是循环运行的。
【问题讨论】:
-
您可以使用 POSIX strnlen 来确定大小。 (你应该这样做,否则 string::size() 总是数组大小)
-
没错,绝对是优化。如果没有人提出如何在没有第二个循环来确定大小的情况下执行此操作(这是我的想法......),我将使用它。