当前位置: 首页 > 知识库问答 >
问题:

为什么字符串操作不起作用?

戚飞雨
2023-03-14

代码如下:

#include <cmath>
#include <iostream>

using namespace std;

int main()
{
    string sidelength;
    cout << "Perimeter of Square" << endl;
    cout << "Enter length of one side: ";
    getline(cin, sidelength);
    cout << sidelength * 4 << endl;

    return 0;
}

运行时,这是错误消息:

错误:不匹配'运算符*'(操作数类型是'std::__cxx11::字符串{aka std::__cxx11::basic_string

如何修复此错误并使程序正确运行?

共有2个答案

徐瑞
2023-03-14

如果确实要将字符串乘以一个数字,可以重载运算符*:

#include <cmath>
#include <iostream>
#include <cctype>
#include <string>

std::string operator*(const std::string &s,int x) {
    std::string result;
    try {
        result = std::to_string(stoi(s)*x);
    } catch(const std::invalid_argument&) {
        result="UND";
    }
    return result;
}

std::string operator*(const std::string &s,double x) {
    std::string result;
    try {
        result = std::to_string(stof(s)*x);
    } catch(const std::invalid_argument&) {
        result="UND";
    }
    return result;
}

int main()
{
    std::string input("1");
    input = input * 5.32;
    std::cout << input << std::endl;
    input = input * 2;
    std::cout << input << std::endl;
    return 0;
}
臧兴学
2023-03-14

get line函数将字符串作为第二个参数,但您希望获得整数/双精度/浮点作为输入。所以不要使用getline。只要运行下面的代码,它就会解决您的问题。

#include <cmath>
#include <iostream>
using namespace std;

int main()
{
    int sidelength;
    cout << "Perimeter of Square" << endl;
    cout << "Enter length of one side: ";
    cin >> sidelength;
    cout << sidelength * 4 << endl;
    return 0;
}
 类似资料:
  • 问题内容: 好的,这很愚蠢,但是wtf还在继续吗? 我在Servlet中有一个String变量,它接受参数的值,并基于该值进行测试以执行某些操作,但是该方法不起作用。问题是什么? 在控制台上,System.out.println向我显示了动作的价值是“某物” 问题答案: 您的第二个比较是错误的。您还应该使用代替,例如: 该运算符比较 引用 的(字符串)对象和正常情况下 等于 字符串不自动具有相同的

  • 注意:位操作中的位置是反过来的,offset过大,则会在中间填充0,比如 SETBIT bit 0 1,此时bit为10000000,此时再进行SETBIT bit 7 1,此时bit为10000001。offset最大2^32-1。 GETBIT key offset / SETBIT key offset value 设置某个索引的位为0/1 bitcount 对位进行统计 bitop 对1个

  • 前言 忙活了一个礼拜,终于等到周末,可以空下来写点东西。 之前已经完成《数值运算》和《布尔运算》,这次轮到介绍字符串操作 。咱们先得弄明白两个内容: 什么是字符串? 对字符串有哪些操作? 下面是"在线新华字典"的解释: 字符串:简称“串”。有限字符的序列。数据元素为字符的线性表,是一种数据的逻辑结构。在计算机中可有不同的存储结构。在串上可进行求子串、插入字符、删除字符、置换字符等运算。 而字符呢?

  • 字符串操作 函数 char *  rt_strstr (const char *s1, const char *s2)   判断字符串   rt_uint32_t  rt_strcasecmp (const char *a, const char *b)   忽略大小写比较字符串   char *  rt_strncpy (char *dst, const char *src, rt_ubase_

  • incr key 对key的值做加加操作,并返回新的值。注意incr一个不是int的value会返回错误,incr一个不存在的key,则设置key为1。范围为64有符号,-9223372036854775808~9223372036854775807。 decr key 同上,但是做的是减减操作,decr一个不存在key,则设置key为-1 incrby key integer 同incr,加指定

  • 最大字符串为512M,但是大字符串非常不建议。