IM返回字符串或字符试图返回从funtion字符串/炭(与两个试过):C++从用户输入
char* foo(void)
{
using namespace std;
// char Name[100];
std::string Name;
std::cout << "Type your name : ";
//std::getline(std::cin, Name);
std::cin >> Name;
// std::cout << "Hello " << Name << "\n";
// std::string str(Name);
return Name;
}
这使我这个错误:
/home/peter/netsend/main.cpp:22: error: cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string}' to 'char*' in return return Name; ^
如果我使用char名称[100]; 当我编译我的程序,我得到这样的警告:
/home/petter/netsend/main.cpp:13: warning: address of local variable 'Name' returned [-Wreturn-local-addr] char Name[100]; ^
当我运行它,我得到:
ype your name : hh terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid Aborted (core dumped)
,如果我直接在INT主要运行这个它的工作原理:
using namespace std;
// char Name[100];
std::string Name;
std::cout << "Type your name : ";
//std::getline(std::cin, Name);
std::cin >> Name;
// std::cout << "Hello " << Name << "\n";
// std::string str(Name);
那么我可以在int main中的其他函数中使用Name。 有什么想法?
感谢
尝试'返回Name.c_str()' –
因为一个字符串!= char数组。在第一个中,你说你正在返回一个字符指针,但你试着返回一个字符串。将返回类型更改为字符串。并且不要使用大写名称作为变量。大写字母用于类型。 – Carcigenicate
@OrkhanAlikhanov,如果忽略'const'的差异并编译,它会返回一个悬挂指针。 – chris