为什么不(* s ++ = * t ++);为我工作?

时间:2014-12-30 01:52:43

标签: c++ arrays string pointers strcpy

我在博客上看到了这个功能,我发现它非常酷。我理解它是如何在概念上起作用的,因为C ++是我的第一语言。

然而,当我尝试在我的程序中实际写出它时,它似乎不起作用。我已经搜索了所有内容,但我只是找到了有关它是如何工作的解释所以我真的很难过。

不是复制NULL char [5](应该评估为false,不复制任何东西并打破循环),而是给出两个编译错误,说“我不能增加值 type char [6]“(两个数组的越界错误)。

为什么我的循环不会在char [5]中断?

我猜这与char和string的细微差别有关,我尝试初始化字符串而不是包含cstring,这也不起作用,显示类似的“无法增加类型字符串”的错误。

#include <iostream>
using namespace std;

int main () {
     char s[] = "hello";
     char t[] = "house";
     while (*s++ = *t++);
     cout << s;
     return 0;
}

2 个答案:

答案 0 :(得分:8)

您无法增加数组。这甚至意味着什么?

试试这个:

#include <iostream> 
using namespace std;

int main ()
{
   char s[] = "hello";
   char t[] = "house";

   char *ss = s;
   char *tt = t;
   while (*ss++ = *tt++);

   cout << s << endl;
}

答案 1 :(得分:-2)

该行&#34; while(* ss ++ = * tt ++)&#34;总是如此,因为=是赋值运算符。你可能想要&#34; while(* ss ++ == * tt&#34;&#34;)&#34;,比较相等。