字符串数组C++的帮助

Help with String Arrays C++

本文关键字:帮助 C++ 数组 字符串      更新时间:2023-10-16
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
  char firstname[] = "Alfred";
  char middlename [] = "E";
char lastname[] = "Neuman";
  char fullname [80];
  int offset=0;
  strcpy(fullname,firstname);
  offset = strlen(firstname);
  strcpy(fullname+offset," ");
  offset +=1;
  strcpy(fullname+offset,middlename);
  offset += strlen(middlename);
  strcpy(fullname+offset," . ");
  offset +=2;
  strcpy(fullname+offset,lastame);
  cout << firstname << "." << middlename << "." << lastname << endl;
  cout << "Fullname:" << fullname << endl;
  return 0;
}

当我们处理文本时,为什么需要偏移量,为什么偏移量加1和2。我似乎无法掌握琴弦和数组,有人介意帮忙吗?

这是因为您使用了错误的工具。

std::string firstname = "Alfred";
std::string middlename = "E";
std::string lastname = "Numan";
std::string fullname = firstname + " " + middlename + " . " + lastname;

偏移量用于跟踪字符串在数组中的当前位置,以便您可以将新参数strcpy放到正确的位置。

将分隔符(空格(的长度添加到偏移量中,以便在正确的位置写入名称的下一部分。

"offset"用于将复制操作的起点移动到数组中最后一个字符后一个字符的点。随着更多的字符被复制到全名中,偏移量会增加,指向全名数组中剩余未使用空间的第一个字符。

strcpy(fullname,firstname);

将名字复制到全名缓冲区中。

offset = strlen(firstname);

将偏移量设置为等于名字的长度,这样您就知道从哪里开始将下一个东西复制到全名缓冲区,在本例中是一个空格字符。

offset +=1;

移动经过该字符的偏移量,以便从该点开始复制到全名缓冲区。

strcpy(fullname+offset,middlename);

将中间名复制到全名缓冲区中。

offset += strlen(middlename);

再次将中间名的长度添加到偏移量中,以便紧接着开始下一次复制操作。

strcpy(fullname+offset," . ");

在"."中复制用于中间首字母。

offset +=2;

将你的偏移量增加到刚好通过的点。

strcpy(fullname+offset,lastame);

以姓氏复制。

理解这两个语句,然后进行纸笔练习。

  1. 数组索引从0开始
  2. CCD_ 2是在CCD_ 4序列中的CCD_ 3位置处的索引。因此,arr+3是序列中的位置4。(由于数组索引从0开始。(