C++;osx和windows中的转义字符差异? 我在xCo中玩C++,我和有个问题 char array[] = "Apple";

C++;osx和windows中的转义字符差异? 我在xCo中玩C++,我和有个问题 char array[] = "Apple";,c++,C++,从技术上讲,会自动添加空转义“\0”。我只是写了一个基本函数来增加c字符串中的字母数,但我进入了一个永久循环,因为它找不到“\0”。为什么呢?我使用的是g++ int CharLength(char* word) { char* temp = word; int count = 0 ; while ( temp != '\0' ) { temp++; count++; } return count; } “te

从技术上讲,会自动添加空转义“\0”。我只是写了一个基本函数来增加c字符串中的字母数,但我进入了一个永久循环,因为它找不到“\0”。为什么呢?我使用的是g++

int CharLength(char* word)
{
    char* temp = word;
    int count = 0 ;

    while ( temp != '\0' )
    {
        temp++;
        count++;
    }

    return count;
}
temp
”将不会为0,直到您查看了所有内存并将其打包!另一方面,当到达字符串末尾时,
*temp
将为零。循环条件应为

while ( *temp != '\0' )

你忘了取消引用

while ( *temp != '\0' )

使用或标题中的strlen。

您并没有取消对指针的引用以确定它指向的是什么。有一个非常好的函数可以实现这一点,它已经被称为
strlen
。您的编译器通常会为调用strlen生成比您自己编写代码快得多的代码。@Ernest Friedman Hill:这仍然是一个比您更好的答案。是的,这是一个错误。但是真正的错误是一开始就没有使用
strlen
。你忘记了
std::string
@Omni:好吧,既然问题似乎是关于如何实现
strlen
,我认为推荐使用
strlen
没有什么帮助。另外,我相信这个答案最初是解释为什么RoR的代码应该运行良好——这个答案与我被否决时的答案没有任何相似之处。@Omnifarious:再次阅读问题的第二和第三个词。'escape character'?是的,那两个词呢?@Omnifarious:来吧,你要告诉我你不知道标题和问题之间的区别?真的吗?@Omni:第一句中的ya goose:-)+1'ing,因为这是问题的正确答案!您可以对
strlen
std::string
甚至是一种更好的字符串处理语言(Perl,任何人?)大加赞赏,但这并不能改变这样一个事实:这个答案解决了具体问题。