标签: tolower

tolower()功能无法在C99中工作

我正在使用哈佛的CS50设备并尝试将字符设为小写.我正在尝试使用该tolower()功能,但当我尝试使用它时,我收到了消息implicit declaration of function 'tolower' is invalid in C99.任何人都在关注为什么我会收到这条消息.我已经包括stdio.h,以及string.h.

c tolower cs50

7
推荐指数
2
解决办法
1万
查看次数

在C++中将单个字符转换为小写 - tolower返回一个整数

我正在尝试将字符串转换为小写,并将其视为char*并迭代每个索引.问题是tolower我在网上读到的函数实际上并没有将char转换为小写:它将char作为输入并返回一个整数.

cout << tolower('T') << endl;
Run Code Online (Sandbox Code Playgroud)

116应该打印时打印到控制台T.

有没有更好的方法将字符串转换为小写?我在网上看过,大多数消息来源都说"使用tolower并遍历char数组",这对我来说似乎并不适用.

所以我的两个问题是:

  1. tolower当我打电话时,它使得它返回116而不是't' 的功能我做错了什么tolower('T')

  2. 除了tolower在每个单独的字符上使用之外,还有更好的方法将字符串转换为C++中的小写字母吗?

c++ string lowercase char tolower

7
推荐指数
1
解决办法
2万
查看次数

C++ - 错误E2285:在函数parseInput(fstream&)中找不到'tolower(char*)'的匹配项

给出以下代码:

 void parseInput(fstream &inputFile) {
        const int LENGTH = 81;
        char line[LENGTH];

        while(!inputFile.fail()) {
            inputFile.getline(line,LENGTH);
            line = tolower(line);
            cout << line << endl;
        }
    }
Run Code Online (Sandbox Code Playgroud)

编译时我收到此错误:

错误E2285:在函数parseInput(fstream&)中找不到'tolower(char*)'的匹配项

我知道它返回一个int,但不是int [],这是否意味着我不应该使用getline来获取字符的输入字符?有没有办法将整行转换为更低?在此先感谢大家的帮助!

c++ compiler-errors tolower

6
推荐指数
2
解决办法
2185
查看次数

如何将字符串设置为全部小写

我有一个 char foo[SIZE]; //(string)

并使用正确输入%s(如printfs正确输入),但现在要将其设置为小写。所以我尝试使用

 if (isupper(*foo)) 
   *foo=tolower(*foo); 
Run Code Online (Sandbox Code Playgroud)

即当我这样做:

printf("%s" foo); //I get the same text with upper case
Run Code Online (Sandbox Code Playgroud)

文字似乎没有改变。谢谢。

c lowercase uppercase toupper tolower

5
推荐指数
2
解决办法
2万
查看次数

就地转换 string_view

std::transform从 C++20 开始,声明constexpr.我有一堆带std::string参数的字符串实用函数,但很多用法最终只是在编译时传递小而短的字符文字序列。constexpr我想我会利用这个事实并声明 和take s的版本,std::string_view而不是创建临时std::string变量只是为了扔掉它们......

原始STD::STRING版本:

[[nodiscard]] std::string ToUpperCase(std::string string) noexcept {
    std::transform(string.begin(), string.end(), string.begin(), [](unsigned char c) -> unsigned char { return std::toupper(c, std::locale("")); });
    return string;
}
Run Code Online (Sandbox Code Playgroud)

STD::STRING_VIEW版本:

[[nodiscard]] constexpr std::string_view ToUpperCase(std::string_view stringview) noexcept {
    std::transform(stringview.begin(), stringview.end(), stringview.begin(), [](unsigned char c) -> unsigned char { return std::toupper(c, std::locale("")); });
    return stringview;
}
Run Code Online (Sandbox Code Playgroud)

但 MSVC 抱怨道:

error C3892: '_UDest': you cannot assign to a …
Run Code Online (Sandbox Code Playgroud)

c++ toupper tolower string-view c++20

5
推荐指数
1
解决办法
3505
查看次数

tolower()不适用于c ++中的Ü,Ö

当我在c ++中尝试使用非英语字符的tolower()时,它无法正常工作.我搜索了这个问题,但我发现了一些关于语言环境的内容,但我不确定最佳解决方案.

我的示例代码如下:

printf("%c ",tolower('Ü'));
Run Code Online (Sandbox Code Playgroud)

c++ tolower

4
推荐指数
1
解决办法
970
查看次数

比较大写或小写是否更常见/标准?

我在工作的前六个月编程,我仍然对标准和最佳实践有感觉。

在进行字符串或字符比较时,是使用 ToUpper 比较大写字符还是使用 ToLower 比较小写字符更常见?我可能更频繁地看到大写字母,但我一直在寻找更明确的答案,也许还有冗长的优化解释(较低的 ASCII 代码,无论如何)。

旁白:在我当前的任务中,我使用 string#replace 并且我的新字符串将是小写的以提高可读性,但这是否一定意味着我应该在我的源字符串和我正在寻找的子字符串上使用 ToLower?

replace coding-style toupper tolower

3
推荐指数
1
解决办法
1341
查看次数

为什么在进行不区分大小写的字符串比较时要避免使用string.ToLower()?

我已经读过,在您的应用程序中,您进行了大量的字符串比较并使用ToLower方法,这种方法非常昂贵.我想知道有谁可以向我解释它是多么昂贵.非常感谢任何信息或解释.谢谢!

.net string performance tolower

3
推荐指数
3
解决办法
1088
查看次数

golang 选择性地将字符串转换为小写

我正在使用一个 ldap 对象,我正在从 Activedirectory 检索一些条目。结果是以大写形式返回领域的方式,例如CN=bob,DC=example,DC=com代替cn=bob,dc=example,dc=com。有没有办法有选择地将CNDC子字符串转换为小写?到目前为止,我strings.split多次使用(首先使用“,”,然后再次使用“=”进行迭代)以达到可以将 CN、DC 等放入列表的程度,然后对它们使用 strings.ToLower。有没有更好更聪明的方法来完成这项工作,可能使用正则表达式,以便我可以避免两次迭代?

regex string iteration go tolower

3
推荐指数
1
解决办法
1395
查看次数

如何将 tolower() 与 char* 一起使用?

我有一个包含一些单词的 .txt 文件,我需要它们是小写的。如何将每个单词变成小写?仅将 tolower() 添加到 strtok() 是行不通的。我应该添加什么?或者也许首先在整个文件上使用 tolower() 会更容易?但如何呢?请帮忙!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <ctype.h>

int main(void)
{
    char str[5000];
    char *ptr;
    char *words[5000];
    FILE * fp = fopen("hi.txt", "r");
    fgets(str, 49, fp);             
    ptr = strtok(str, ",.; ");         
    int i = 0;
    while(ptr != NULL)  
    {
        words[i]= ptr;
        i++;
        ptr = strtok(NULL, ",.; "); 
    }
    fclose(fp);

    for(int j=0;j<i;j++) {
        printf("%s\n", words[j]);
        //printf("%s\n", tolower(words[j])); // Doesn't work!
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

例子:

你好.txt

Foo;
Bar.
Baz.
Run Code Online (Sandbox Code Playgroud)

预期产出

foo
bar …
Run Code Online (Sandbox Code Playgroud)

c char tolower

3
推荐指数
1
解决办法
1万
查看次数