【问题标题】:error: conversion from ‘char’ to non-scalar type ‘std::string {aka std::basic_string}’ in C++错误:在 C++ 中从“char”转换为非标量类型“std::string {aka std::basic_string}”
【发布时间】:2020-12-30 23:01:35
【问题描述】:
#include <iostream>
using namespace std;

int main() {
    string str;
    cin >> str;
    string str1 = str[0];        // statement1

    str1 = str[0];               // statement2
    cout << str1 << endl;
}

Statement1 显示错误,而 statement2 运行正常。谁能解释一下为什么会这样?

【问题讨论】:

  • string str1 = str[0]; 你觉得这条线有什么作用?
  • str[0] 是索引 0 处的字符,cplusplus.com/reference/string/string/string 您可以看到 std::string 的构造函数,没有一个 std::string 构造函数接受字符作为第一个参数;构造函数 #5 接受一个指向 char 的指针以及字节数,但您可以使用它,例如 string str1(&amp;str[0],1);

标签: string c++14


【解决方案1】:

语句 1 正在尝试使用 std::string 的构造函数来初始化 str1(即使您使用的是 = 它仍然调用构造函数),但是没有构造函数可以从单个字符。另一方面,语句 2 调用 std::string::operator=(),其中存在适合单个字符的重载。

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 2020-02-03
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2015-04-28
    相关资源
    最近更新 更多