帮助String Arrays C ++

时间:2011-06-11 21:57:05

标签: c++

#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。我似乎无法掌握字符串和数组,任何人都在心里帮忙吗?

5 个答案:

答案 0 :(得分:3)

那是因为你使用了错误的工具。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

strcpy(fullname,firstname);

将firstname复制到fullname缓冲区。

offset = strlen(firstname);

将偏移量设置为等于firstname的长度,以便知道将下一个内容复制到fullname缓冲区的位置,在本例中为空格字符。

offset +=1;

移动你的偏移量通过该字符,这样就可以从那一点开始复制到fullname缓冲区。

strcpy(fullname+offset,middlename);

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

offset += strlen(middlename);

再次将中间名的长度添加到偏移量,以便在此之后立即开始下一个复制操作。

strcpy(fullname+offset," . ");

复制'。'中间的初始。

offset +=2;

将你的偏移量增加到右边通过那个。

strcpy(fullname+offset,lastame);

复制姓氏。

答案 4 :(得分:0)

了解这两个陈述,然后是铅笔练习。

  1. 数组索引从0开始。
  2. arrayVariable + integerinteger + 1序列中arrayVariable位置的索引。因此,arr+3是序列中的位置4。 (因为数组索引从0开始。)