gpt4 book ai didi

c++ - 警告 C4244\'=' : conversion from 'int' to 'char' , 可能丢失数据?

转载 作者:太空狗 更新时间:2023-10-29 19:57:14 47 4
gpt4 key购买 nike

在编写解决难题的程序时,我在以下代码段中遇到警告:

std::string str = "hello";

for (int i = 0; i < str.length(); ++i)
str[i] = toupper(str[i]); //make every letter capital
// ^^ warning

我在上面的最后一行收到警告。

Warning C4244 \ '=': conversion from 'int' to 'char', possible loss of data?

有什么办法可以消除这个警告吗?

最佳答案

str[i] 显式转换为 char:

str[i] = (char)toupper(str[i]);

或者:

str[i] = static_cast<char>(toupper(str[i]));

使操作更加C++友好。 std::toupper 返回一个 int,这让编译器报错。通过转换返回值,您告诉编译器您知道自己在做什么。

作为旁注,我建议立即对字符串使用 boost::to_upper(),如下所示:

#include <boost/algorithm/string.hpp>
#include <string>

std::string str = "hello";

boost::to_upper(str); //Is HELLO

std::string newstr = boost::to_upper_copy<std::string>("hello"); //is HELLO

关于c++ - 警告 C4244\'=' : conversion from 'int' to 'char' , 可能丢失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349063/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com