将 cstring 转换为驼峰式
Converting a cstring to camelcase
所以我的任务是填写我的函数,以便在每个 运行 期间使用测试驱动程序为其提供一个随机字符串。对于此功能,我必须将每个单词的第一个字符转换为大写,其他所有字符都必须小写。
它大部分都有效,但我的代码存在的问题是它不会将第一个字符大写,如果在单词前有一个句点,例如:
.word
在这种情况下 'w' 将保持较低水平。
这是我的来源:
void camelCase(char line[])
{
int index = 0;
bool lineStart = true;
for (index;line[index]!='[=10=]';index++)
{
if (lineStart)
{
line[index] = toupper(line[index]);
lineStart = false;
}
if (line[index] == ' ')
{
if (ispunct(line[index]))
{
index++;
line[index] = toupper(line[index]);
}
else
{
index++;
line[index] = toupper(line[index]);
}
}else
line[index] = tolower(line[index]);
}
lineStart = false;
}
这是一个应该可行的解决方案,在我看来稍微简单一些:
#include <iostream>
#include <cctype>
void camelCase(char line[]) {
bool active = true;
for(int i = 0; line[i] != '[=10=]'; i++) {
if(std::isalpha(line[i])) {
if(active) {
line[i] = std::toupper(line[i]);
active = false;
} else {
line[i] = std::tolower(line[i]);
}
} else if(line[i] == ' ') {
active = true;
}
}
}
int main() {
char arr[] = "hELLO, wORLD!"; // Hello, World!
camelCase(arr);
std::cout << arr << '\n';
}
变量active
跟踪下一个字母是否应该转换为大写字母。一旦我们将字母转换为大写形式,active
就会变为 false,程序开始将字母转换为小写形式。如果有 space,active
设置为 true,整个过程再次开始。
所以我的任务是填写我的函数,以便在每个 运行 期间使用测试驱动程序为其提供一个随机字符串。对于此功能,我必须将每个单词的第一个字符转换为大写,其他所有字符都必须小写。
它大部分都有效,但我的代码存在的问题是它不会将第一个字符大写,如果在单词前有一个句点,例如:
.word
在这种情况下 'w' 将保持较低水平。
这是我的来源:
void camelCase(char line[])
{
int index = 0;
bool lineStart = true;
for (index;line[index]!='[=10=]';index++)
{
if (lineStart)
{
line[index] = toupper(line[index]);
lineStart = false;
}
if (line[index] == ' ')
{
if (ispunct(line[index]))
{
index++;
line[index] = toupper(line[index]);
}
else
{
index++;
line[index] = toupper(line[index]);
}
}else
line[index] = tolower(line[index]);
}
lineStart = false;
}
这是一个应该可行的解决方案,在我看来稍微简单一些:
#include <iostream>
#include <cctype>
void camelCase(char line[]) {
bool active = true;
for(int i = 0; line[i] != '[=10=]'; i++) {
if(std::isalpha(line[i])) {
if(active) {
line[i] = std::toupper(line[i]);
active = false;
} else {
line[i] = std::tolower(line[i]);
}
} else if(line[i] == ' ') {
active = true;
}
}
}
int main() {
char arr[] = "hELLO, wORLD!"; // Hello, World!
camelCase(arr);
std::cout << arr << '\n';
}
变量active
跟踪下一个字母是否应该转换为大写字母。一旦我们将字母转换为大写形式,active
就会变为 false,程序开始将字母转换为小写形式。如果有 space,active
设置为 true,整个过程再次开始。