我在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
情况。但是,例如测试应该给我回OriginalWord=false
。因为towlower(T)
会导致t和CharacterOriginal = T
,这意味着它们不一样,因此OriginalWord=false
?
我做错了什么?我想它必须对towlower
函数
答案 0 :(得分: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;
}
}
答案 1 :(得分: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++)
答案 2 :(得分:-1)
string Character false usage ,它必须是char因为 tolower 返回int(char)而不是字符串。 也是为了获得字符串的长度 - &gt; 。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;
}
}