类型转换:从“size_t”到“string”的令人困惑的转换

问题描述 投票:0回答:1

那里! 当我尝试将变量从“size_t”转换为“string”时,似乎所有结果最终都是一些奇怪的字符,这是我的代码:

# include <iostream>
# include <string.h>
# include <string>

string ulltostr(size_t bigdata){
    size_t x = bigdata;
    std:string ret = std::to_string(bigdata);
    return ret;
}
int main(){
    size_t p =1210259646;

    printf("p : %llu\n",p);
    printf("p in string : %s\n",ulltostr(p));

    return 0;
}

// result be like:
// p : 1210259646
// p in string : 婿?s)

有人请指出我错了什么吗?我打印它的方式不正确,还是转换函数“ulltostr”中出现任何错误?如果还有其他方法可以从 'size_t' 转换为 'string' 吗?谢谢!!!

c++
1个回答
0
投票

printf
s
%s
转换说明符需要一个
char*
,它应指向以 null 结尾的 C 字符串。 A
std::string
不是。您必须使用
ulltostr(p).c_str()
才能与
printf
一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.