-2

我在 C++ 中有以下代码:

string StringTest = "Test";
bool OriginalWord = true;
for (unsigned int i = 0; i < StringTest(); i++) {
    string Character = towlower(StringTest[i]);
    string CharacterOriginal = StringTest[i];
    if (Character != CharacterOriginal) {
        //t vs. T should trigger false, but never happens?
        //e vs. e should trigger true
        //s vs. s should trigger true 
        //t vs. t should trigger true
        OriginalWord = false;
        }
    }

请注意,我使用towlower而不是tolower.

这总是导致一种OriginalWord=true情况。但是,例如 Test 应该还给我OriginalWord=false。因为towlower(T)将导致 t 和 the CharacterOriginal = T,这意味着它们不一样,因此OriginalWord=false

我究竟做错了什么?我想它必须与towlower功能有关

4

3 回答 3

0

您在类型转换方面遇到了一些麻烦,使用更严格的编译器标志不会飞。请参阅下面代码片段中的注释:

string StringTest = "Test";
bool OriginalWord = true;
for (unsigned int i = 0; i < StringTest.size(); i++) 
// do you mean StringTest.size() instead of StringTest()?
{
    wint_t Character = towlower(StringTest[i]);
    wint_t CharacterOriginal = StringTest[i];
// can't convert a char to a string (or const char *)
// did you meant to use wint_t instead of string?
    if (Character != CharacterOriginal) 
    {
        //t vs. T should trigger false, but never happens?
        //e vs. e should trigger true
        //s vs. s should trigger true 
        //t vs. t should trigger true
        OriginalWord = false;
    }
}
于 2017-04-21T12:09:06.480 回答
0

好的,您的代码中存在一些问题,首先:

string StringTest = "Test"; // you created StringTest as a single variable
 //in the next steps you use it all the time as a array, lets change that.

int count = 10;
string StringTest[count] = { "Test", "test","Test", "test","Test", "test","Test", "test","Test", "test" };

for (unsigned int i = 0; i < StringTest(); i++) // you must use the size of string so:
for (unsigned int i = 0; i < count; i++) 
于 2017-04-21T12:53:38.060 回答
-1

string Character false 用法,必须是 char 因为tolower返回 int(char) 而不是字符串。还要获取字符串的长度-> StringTest。大小()

编辑后的代码在这里!

string StringTest = "Test";
bool OriginalWord = true;
for (unsigned int i = 0; i < StringTest.size(); i++) {
    char Character = tolower(StringTest[i]);
    char CharacterOriginal = StringTest[i];
    if (Character != CharacterOriginal) {
        OriginalWord = false;
    }
}
于 2017-04-21T11:35:54.917 回答