【发布时间】:2015-09-02 02:34:08
【问题描述】:
这是作业:
创建一个包含姓名、年龄和头衔的 Cstring 变量。每个字段 由一个空格隔开。例如,字符串可能包含“Bob 45 程序员”或任何其他相同格式的姓名/年龄/头衔。仅使用编写程序 cstring (不是类 string )中可以提取名称的函数, 年龄和标题到单独的变量中。
我从字符串中提取了名称,但之后我无法获取任何字符。我不能使用指针,因为我们还没有学会,所以没有 strtok。我只需要一个方向,因为我确信有一个功能可以让这更容易。谢谢。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char y[] = "taylor 32 dentist";
char name[25];
char age[4];
char title[40];
int i = 0;
while (y[i] != ' ')
{
while (y[i] != '\0')
{
if (y[i] == ' ' || y[i + 1] == '\0')
{
break;
}
name[i] = y[i];
i++;
}
}
cout << "Name: " << name << endl
<< "Age: " << age << endl
<< "Title: " << title << endl;
return 0;
}
已解决:
#include <iostream>
#include <cstring>
using namespace std;
void separate_Variables(char y[], char name[], char age[], char title[]);
void output(char name[], char age[], char title[]);
int main()
{
char y[] = "taylor 32 dentist";
char name[25];
char age[4];
char title[40];
separate_Variables(y, name, age, title);
output(name, age, title);
return 0;
}
void separate_Variables(char y[], char name[], char age[], char title[])
{
int i = 0;
int j = 0;
while (y[i] != '\0' && y[i] != ' ') {
name[j++] = y[i++];
}
name[j] = '\0';
j = 0;
i++;
while (y[i] != '\0' && y[i] != ' ') {
age[j++] = y[i++];
}
age[j] = '\0';
j = 0;
i++;
while (y[i] != '\0' && y[i] != ' ') {
title[j++] = y[i++];
}
title[j] = '\0';
j = 0;
}
void output(char name[], char age[], char title[])
{
cout << "Name: " << name << endl
<< "Age: " << age << endl
<< "Title: " << title << endl;
}
【问题讨论】:
-
通过
y创建一个迭代器(你可以称它为yi或其他名称),然后创建单独的循环来提取每个单词。每次,您都会重置i,但不会重置yi。通常你会把它包装在一个函数中,但我不得不假设你还没有“学习”函数。此外,无论如何,您都希望将指针用作函数参数.... -
好吧,酷,我明白你的意思,为整个字符串设置一个计数器,并为单词设置一个子计数器。我们学过函数,我只是想在 main 中弄清楚,一旦发现问题就将其分开。
-
或许值得关注std::strcspn。
-
为什么问题中提出了解决方案?
-
@Martin 我更新了它以帮助任何需要它的人。
标签: c++