小编Log*_*ing的帖子

在C++中将字符串转换为short

所以我一直在寻找如何将字符串转换为short并找到很多关于如何将字符串转换为整数的方法.我会留下一个问题作为对这些主题的评论,但我没有足够的声誉.所以,我想要做的是将字符串转换为short,因为数字应该永远不会超过三或零以下并且短路会节省内存(据我所知).

要清楚,我不是指ASCII码.

我希望能够做的另一件事是检查字符串到short的转换是否失败,因为我将使用由用户输入组成的字符串.

我知道我可以使用while循环来实现这一点,但是如果有一个内置函数在C++中执行此操作,那将与while循环一样或更高效,我很乐意听到它.

c++ string short

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

在YAML中,如何对多行进行评论

我知道你可以通过使用#标签在YAML中发表单行注释,但是我无法/*在java中找到类似于启动注释的内容并且必须用a完成*/.YAML中是否存在这样的运营商?

yaml comments

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

C++ For循环的效率和可读性,比较两个C风格的字符串

所以我创建了自己的函数来比较两个C字符串:

bool list::compareString(const char array1[], const char array2[])
{
    unsigned char count;
    for (count = 0; array1[count] != '\0' && array2[count] != '\0' && (array1[count] == array2[count] || array1[count + 32] == array2[count] || array1[count] == array2[count+32]); count++);
    if (array1[count] == '\0' && array2[count] == '\0')
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

我的for循环的参数非常长,因为它将计数带到至少一个字符串的末尾,并char以这样的方式比较每个数组中的每个字符串它们的情况无关紧要(将32添加到大写字母char转为char进入小写的对应部分).

现在,我猜这是比较两个C字符串的最有效方法,但由于它的长度,for循环难以阅读.我被告知的是尽可能使用for循环而不是while循环,因为for循环在其起始参数中具有起始,结束和递增条件,但为此,这似乎可能不适用.

我要问的是,我应该如何格式化这个循环,是否有更有效的方法呢?

c++ for-loop c-strings

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

C++为什么我不能在结构中进行算术运算或转换?

我有一个游戏,我想计算一个玩摇滚纸剪刀的玩家对计算机的输赢(C++的随机数函数).为了跟踪玩家的胜利,损失以及与计算机的关系,我创建了这个结构(这是全局的):

struct human{
    short wins = 0;
    short losses = 0;
    short ties = 0;
};
Run Code Online (Sandbox Code Playgroud)

当我尝试使用short结构中的一个变量进行数学运算时会出现问题:

int main(){
    short totalPlays = 1;
    float winsPerc;
    outcome(totalPlays, winsPerc);
}
void outcome(short totalPlays, float& winsPerc){
    winsPerc = (static_cast<float>(human.wins) / static_cast<float>(totalPlays))* 100;
}
Run Code Online (Sandbox Code Playgroud)

在这两个函数中,我试图计算玩家获胜的百分比.但是,我的编译器似乎humanhuman.wins变量的一部分解释为一个类型.所以当然我试图改变human.winsshort human.wins无济于事.之后,编译器只表示类型short是意外的.由于这是如此模糊,我真的不知道我做错了什么.任何帮助将非常感谢!

c++ struct casting

-1
推荐指数
1
解决办法
66
查看次数

错误C2106:'=':左操作数必须是带有`!=`C++的l值

我完全不知道为什么我的编译器抛出这个错误:"错误1错误C2106:'=':左操作数必须是l值"这行代码:

while ((input != 1 && input != 2 && input != 3 && choice = 1) ||
      (input != 1 && input != 2 && input != 3 && input != 4 && input != 5 && input != 6 && choice = 1) ||
      std::cin.fail()){}
Run Code Online (Sandbox Code Playgroud)

想要的错误似乎input很短,可以修改,但!=不是修饰符,它是一个检查器.到底是怎么回事?

c++

-2
推荐指数
1
解决办法
1181
查看次数

标签 统计

c++ ×4

c-strings ×1

casting ×1

comments ×1

for-loop ×1

short ×1

string ×1

struct ×1

yaml ×1