该程序的目的是反转字符串并将其打印出来。这是一项学校作业,我刚刚开始学习。我需要反转给我的字符串(整个main函数是为赋值而给出的)我需要通过使用2个指针来表示cstring的开头和cstring的结尾。在代码中,我知道传递的cstring的开头只是" temp"但我不知道如何找到cstring的结束字母并指定它的指针。
主要功能是给我的:
#include <iostream>
#include "reverse.hpp"
using namespace std;
void reverse(char*);
int main()
{
// these are the test cases
char str1[] = "time";
char str2[] = "straw";
char str3[] = "deliver";
char str4[] = "star";
char str5[] = "knits";
cout << "The strings before reversing: " << endl;
cout << str1 << " " << str2 << " " << str3 << " " << str4 << " " << str5 << " " << endl;
reverse(str1);
reverse(str2);
reverse(str3);
reverse(str4);
reverse(str5);
cout << "The strings after reversing: " << endl;
cout << str1 << " " << str2 << " " << str3 << " " << str4 << " " << str5 << " " << endl;
return 0;
}
这是反向功能:
#ifndef REVERSE_HPP
#define REVERSE_HPP
#include <string.h>
void reverse(char*temp)
{
// *temp would equal "t" in the first cstring
// (sizeof *temp - 1) would equal last character ???
}
#endif // REVERSE_HPP
这与发布的其他内容不同,因为我试图用指针获取长度
答案 0 :(得分:1)
无法通过指针查找数组的长度。但是你的数组是从字符串文字初始化的,c和c ++中的字符串有一种特殊的存储方式,可以让你确定它的长度。
字符串被定义为一系列非null
字符后跟一个null
字符,因此要查找字符串的长度,您只需遍历字符,直到找到{ {1}},像这样
'\0'
您当然可以使用c标准库提供的size_t length = 0;
while (str[length] != '\0')
++length;
函数,该函数位于 string.h 标题中。
答案 1 :(得分:1)
仅为完整性
void reverse(char*temp)
{
int l = strlen(temp);
.....
}
要获得额外的功劳,请使用c ++字符串重新实现整个任务(主要),这是你应该在c ++中使用的。还要将字符串放在向量中而不是n个单独的变量中。
叹息 - 我看到其他人已经为你做了第一个。你仍然可以在std :: string而不是c_str()上使用反向函数。请注意,c ++有一个oneliner可以反转字符串 - 找到额外的额外信用
答案 2 :(得分:0)
在c ++中,您想使用std :: string
#include <string>
#include <iostream>
#include "reverse.hpp"
using namespace std;
// why the declaration here?
// (I would presume this goes in "reverse.hpp" ?)
void reverse(std::string& str);
int main()
{
string str1 = "time";
string str2 = "straw";
string str3 = "deliver";
string str4 = "star";
string str5 = "knits";
cout << "The strings before reversing: " << endl;
cout << str1 << " " << str2 << " " << str3 << " " << str4 << " " << str5 << " " << endl;
reverse(str1);
reverse(str2);
reverse(str3);
reverse(str4);
reverse(str5);
cout << "The strings after reversing: " << endl;
cout << str1 << " " << str2 << " " << str3 << " " << str4 << " " << str5 << " " << endl;
return 0;
}
别忘了改变
reverse(const char*);
要 reverse(std :: string&amp;);
std::string非常易于使用,与指针不同,它可以满足您的所有需求。