Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC_C++_C - Fatal编程技术网

C++ 如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC

C++ 如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例: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

如何找到字符串的长度,该字符串之间还包含字符串终止字符。示例:ABC\0ABC。是否存在返回长度的内置函数

如果输入字符串为:ABC\0ABC
输出: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;