【问题标题】:Add two indexes in char* array在 char* 数组中添加两个索引
【发布时间】:2018-09-27 03:21:49
【问题描述】:

我有一个 char* 数组,我想添加每两个连续索引并将其存储在另一个数组中。例如功能应该是这样的

  char* wordsArray="The quick brown fox.";
  char* array; 
  array=new char[size-1];       \\assume size is a declared variable 
  for(int i=0; i<size-1; i++)   
       array[i]=wordsArray[i]+wordsArray[i+1];

现在,数组的第一个索引将包含“The quick”,第二个索引包含“quick brown”,第三个索引包含“brown fox”。 这样做的正确方法是什么?

编辑:假设我们不能使用内置的 STL 类和算法(向量等)

【问题讨论】:

  • 考虑到对字符数组的索引访问访问的是单个字符,而不是单词。如果你的逻辑单元是一个单词而不是字符,你必须先找到单词(有很多方法),或者从单词开始。 std::vector&lt;std::string&gt; sentence = {"The", "quick", "brown", "fox"};
  • 次要注意:从 C++11 开始,char* wordsArray="The quick brown fox."; 是非法的。字符串文字,例如"The quick brown fox.",是常量字符数组。您不能将常量值分配给非常量指针,以防止有人尝试写入指向且可能无法更改的值时出错。

标签: c++ arrays char


【解决方案1】:

您可以使用std::vectorstd::string 轻松完成此操作。

#include <iostream>
#include <vector>

int main()
{ 
    std::vector<std::string> wordsArray = {"The", "quick", "brown", "fox."};
    std::vector<std::string> array;
    int size = wordsArray.size();

    for(int i=0; i<size-1; i++)   
       array.push_back(wordsArray[i]+ " " + wordsArray[i+1]);

    for(int i=0; i<size-1; i++)   
       std::cout << array[i] << "\n";

    return 0;
}

输出:

The quick
quick brown
brown fox.

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 2018-11-21
    • 2013-12-10
    • 2013-10-16
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多