gpt4 book ai didi

c++ - 将 std::string 转换为 const char*,出现错误

转载 作者:太空狗 更新时间:2023-10-29 19:40:31 24 4
gpt4 key购买 nike

#include <iostream>
#include <sstream>

template <typename T>
const char* numberToString(T number) {
std::ostringstream ss;
ss << number;
return ss.c_str();
}

int main() {
printf(numberToString(123));
return 0;
}

我的错误:

1>d:\programming\euler\problem 4\problem 4\problem 4\source.cpp(8): error C2039: 'c_str' : is not a member of 'std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>>'
1> d:\programming\euler\problem 4\problem 4\problem 4\source.cpp(26) : see reference to function template instantiation 'const char *numberToString<int>(T)' being compiled
1> with
1> [
1> T=int
1> ]

为什么这行不通?

最佳答案

c_strstd::string 的成员,而不是 ostringstream。如果要从流中获取 string,请使用 str()。但是请注意,从 string 返回 const char* 是错误的 - string 会在您使用 常量字符*。因此,让你的函数返回一个 string(或者让它得到一个缓冲区来写入):

template <typename T>
std::string numberToString(T number) {
std::ostringstream ss;
ss << number;
return ss.str();
}

关于c++ - 将 std::string 转换为 const char*,出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com