首页 > 解决方案 > 错误:在 C++ 中从“char”转换为非标量类型“std::string {aka std::basic_string}”

问题描述

#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 运行正常。谁能解释为什么会发生这种情况?

标签: stringc++14

解决方案


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


推荐阅读