组件
我有一个字符串,例如
char block[4][256] = "";
我有一句话
char sentence[256] = "Bob walked his dog";
我还有一个迭代器变量
int pos = 0;
我的目标是
我试图将句子数组sentence中的每个单词按顺序分配到2-d block数组block中。
例如,
假设我有这段代码(我自己写的 - 没有按计划工作)
我希望输出为:
有人可以帮忙我如何解决这个问题吗?谢谢!
我有一个字符串,例如
char block[4][256] = "";
我有一句话
char sentence[256] = "Bob walked his dog";
我还有一个迭代器变量
int pos = 0;
我的目标是
我试图将句子数组sentence中的每个单词按顺序分配到2-d block数组block中。
例如,
假设我有这段代码(我自己写的 - 没有按计划工作)
for (int x=0; x < ((int)strlen(sentence)); x++)
{
if (sentence[x] == ' ') // not using strcmp at the moment to be more clear
{
++pos; // move to the next word after space
for (int y=0; y < pos; y++) // scan through the word
{
for (int z=0; z < x; z++) // add the word to the array
{
block[y][z] = sentence[z]; // assign the block (!!confusion here!!)
}
}
}
}
我的看法
在处理这个问题时,我需要首先扫描句子,直到遇到一个空格 ' ' 字符。在遇到这个字符后,我需要重新扫描句子并开始将所有字符添加到该空格 ' ' 位置之前的第一段块数组 block[y][z]
中,其中 z 是上面 for 语句中的迭代器,y 是每个遇到的空格位置 +1。我认为我主要的问题是理解如何分配二维数组。如果有人看到更好的方法来解决这个问题,我会很高兴听到,谢谢!
我想要的输出
在打印block[x][256]
的内容之后,我希望每个 x 输出我正在扫描的数组中的每个单词。例如,如果我有这样的东西。
for (int a=0; a < 4; a++)
{
for (int b=0; b < strlen(block[a][]); b++)
{
printf("%s\n", block[a][b]);
}
}
我希望输出为:
block[0][]: Bob
block[1][]: walked
block[2][]: his
block[3][]: dog
有人可以帮忙我如何解决这个问题吗?谢谢!
std::string
、std::vector<std::string>
以及cout
等呢?此外,std::istringstream
可以用来将输入分隔成单词。换句话说,你的问题可以简化为几行C++
代码。 - PaulMcKenziestd::vector<std::vector<int>>
可以很容易地赋值! - Basile Starynkevitch