Jef*_*ffR 1 c compiler-warnings toupper
这是我的代码,我想将字符串中的一个字符转换为大写。
TCHAR sPassword[16] = L"password";
INT iChar = toupper(sPassword[4]);
sPassword[4] = iChar;
Run Code Online (Sandbox Code Playgroud)
它运行正常,但我收到警告:
warning C4244: '=': conversion from 'int' to '_Ty', possible loss of data
Run Code Online (Sandbox Code Playgroud)
我试过铸造iChar,(INT)但没有任何区别。
警告是由于INT对象缩小为TCHAR一个。这些类型的存在是为了提供肯定的可修复性,并且可能与其他编译设置的范围类似。
TCHAR iChar = (TCHAR) toupper(sPassword[4]);正如@Zsigmond Szabó所回答的那样是一个好主意 - 什么时候TCHAR是char朋友。
然而,有躺着一个更深层次的问题:toupper()是单字节大小写转换和时是不是最好的转换功能使用TCHAR不是char等。
代码也可能是:
int iChar = toupper(sPassword[4]); // if toupper must be used
sPassword[4] = (TCHAR) iChar;
Run Code Online (Sandbox Code Playgroud)
为了处理一般TCHAR情况下的转换,代码需要更大的灵活性。
TCHAR 不是标准的 C 类型或定义。
假设这是一个 MS TCHAR,请考虑_totupper()。
TCHAR iChar = (TCHAR) _totupper(sPassword[4]);
sPassword[4] = iChar;
Run Code Online (Sandbox Code Playgroud)