C++ 如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC
如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC。是否存在返回长度的内置函数 如果输入字符串为:ABC\0ABCC++ 如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC,c++,c,C++,C,如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC。是否存在返回长度的内置函数 如果输入字符串为:ABC\0ABC 输出:8由于C样式字符串的结尾只能检测到,因为它以'\0'字符结尾,因此您所问的问题一般无法解决。如您的示例所示,如果您知道字符串中只有一个'\0'字符,则只需执行以下操作: x = strlen(string); // length of string before the first '\0' x += strlen(str
输出:8由于C样式字符串的结尾只能检测到,因为它以
'\0'
字符结尾,因此您所问的问题一般无法解决。如您的示例所示,如果您知道字符串中只有一个'\0'
字符,则只需执行以下操作:
x = strlen(string); // length of string before the first '\0'
x += strlen(string + x + 1) + 1; // plus the length of the string after
// the first '\0' plus the '\0' itself.
由于C样式字符串的结尾只有在
'\0'
字符结尾时才可检测,因此您所问的问题一般无法解决。如您的示例所示,如果您知道字符串中只有一个'\0'
字符,则只需执行以下操作:
x = strlen(string); // length of string before the first '\0'
x += strlen(string + x + 1) + 1; // plus the length of the string after
// the first '\0' plus the '\0' itself.
什么类型的字符串?c-string(以null结尾的字符*),std::string?您将此值存储在哪种类型的变量中?是一个
std::string
还是一个char*
?答案取决于此。我将此字符串存储在char*中。但如果你能从这两方面考虑,给我一些启示,我将不胜感激。谢谢如果您将字符串存储在char*中,则没有答案。该字符串在技术上是“ABC”,而不是“ABC/0ABC”。@user1168582:没有通用的解决方案。如果有人正在向您传递一个包含“\0”字符的char*
,那么他们也应该礼貌地向您传递该字符串的长度。如果他们不这样做,那么我强烈建议不要使用他们的代码。如果不可能,那么去找程序员,让他们提供一个长度。如果这也不可能,那么请修复代码,以便自己提供长度。如果这些都不可能的话。。。你完蛋了。请注意,任何文件加载API都会给您一个长度。什么类型的字符串?c-string(以null结尾的字符*),std::string?您将此值存储在哪种类型的变量中?是一个std::string
还是一个char*
?答案取决于此。我将此字符串存储在char*中。但如果你能从这两方面考虑,给我一些启示,我将不胜感激。谢谢如果您将字符串存储在char*中,则没有答案。该字符串在技术上是“ABC”,而不是“ABC/0ABC”。@user1168582:没有通用的解决方案。如果有人正在向您传递一个包含“\0”字符的char*
,那么他们也应该礼貌地向您传递该字符串的长度。如果他们不这样做,那么我强烈建议不要使用他们的代码。如果不可能,那么去找程序员,让他们提供一个长度。如果这也不可能,那么请修复代码,以便自己提供长度。如果这些都不可能的话。。。你完蛋了。请注意,任何文件加载API都会给您一个长度。第二个strlen不应该是strlen(string+x+1)吗?如果我不知道字符串中“\0”出现的次数会怎样?那么您就不走运了。为什么您的字符串中首先有空字符?@user1168582:那么您的选项可以归结为要么被告知长度是多少,要么不知道长度是多少。你不能用魔法将这段长度变为现实。它将按约定发生(第一个“\0”字符),或者将为您指定一个长度。这就是为什么C++程序员倾向于使用<代码> STD::String 或一些实际的字符串容器类。大多数人不关心\0
字符。我无法理解下面的语句是如何工作的:x+=strlen(string+x+1)+1;第二个strlen不应该是strlen(string+x+1)吗?如果我不知道字符串中“\0”出现的次数会怎样?那么你就不走运了。为什么您的字符串中首先有空字符?@user1168582:那么您的选项可以归结为要么被告知长度是多少,要么不知道长度是多少。你不能用魔法将这段长度变为现实。它将按约定发生(第一个“\0”字符),或者将为您指定一个长度。这就是为什么C++程序员倾向于使用<代码> STD::String 或一些实际的字符串容器类。大多数人不关心\0
字符。我无法理解下面的语句是如何工作的:x+=strlen(string+x+1)+1;