草庐IT

c++ - 为什么在返回字符串的函数上调用 std::string.c_str() 不起作用?

我有以下代码:std::stringgetString(){std::stringstr("hello");returnstr;}intmain(){constchar*cStr=getString().c_str();std::cout我认为getString()会返回str的拷贝(getString()按值返回);因此,str的拷贝将在main()中保持“事件”状态,直到main()返回。这将使cStr指向一个有效的内存位置:底层char[]或char*(或其他)str由getString()返回,保留在main()中。但是,显然不是这样,因为程序输出的是垃圾。那么,问题是,str

c++ - 如何在 unsigned int 和 int 之间安全地进行 static_cast?

我有一个8字符的string表示一个十六进制数,我需要将它转换为一个int。此转换必须保留字符串"80000000"及更高版本的位模式,即这些数字应为负数。不幸的是,天真的解决方案:inthex_str_to_int(conststringhexStr){stringstreamstrm;strm>val;returnstatic_cast(val);}如果val>MAX_INT(返回值为0),则对我的编译器不起作用。将val的类型更改为int也会导致较大数字为0。我已经尝试了SO上各种答案的几种不同解决方案,但尚未成功。这是我所知道的:我在OpenVMS上使用HP的C++编译器(我相

c++ - 为什么在 g++ std::intmax_t 中不是 __int128_t?

我的问题很简单:因为std::intmax_t根据cppreference定义为maximumwidthintegertype,为什么不对应GCC中的__int128_t? 最佳答案 我认为这违反了C和C++标准——或者gcc不考虑__int128_t是一个整数类型。C标准(1999版和2011版)不需要intmax_t成为标准类型之一;它必须是“能够表示任何有符号整数类型的任何值的有符号整数类型”。特别是,它可以是一个扩展整数类型——如果有一个128位扩展整数类型,那么intmax_t必须至少为128位宽。C标准甚至建议使用实现定

c++ - 这个模板元程序中的 int*** 是如何工作的?

模板元编程在这里(staticconstintvalue=1+StarCounter::value;)如何打印出3?#includetemplatestructStarCounter{staticconstintvalue=0;};templatestructStarCounter{staticconstintvalue=1+StarCounter::value;};intmain(){std::cout::value 最佳答案 第一个模板创建了一个结构,当你调用StarCounter::value时它总是返回0.第二个模板专门用于

c++ - int 与无符号或有符号相同吗?

int和unsigned还是signed是同一种类型吗? 最佳答案 Plainint与signed相同与signedint相同 关于c++-int与无符号或有符号相同吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3414233/

windows - 传递 CString 后跟 int 时 FFI 中的错误

我的Rust测试代码extern"C"{fntest_int_only(n:libc::c_int);fntest_int_and_str(s:CString,n:libc::c_int);}pubfntest1(){unsafe{test_int_only(0);test_int_only(1);test_int_only(2);test_int_only(4);test_int_only(-12);}}pubfntest2(){unsafe{test_int_and_str(CString::new("Foo").unwrap(),0);test_int_and_str(CStri

c++ - 如何将 TCHAR 转换为 int

我想将TCHAR转换为int,但是当我转换它时,我得到的ASCII值是int,而不是数字值。代码:#include"stdafx.h"#include#include#includeusingnamespacestd;intconverttoint(){TCHARtchar[2];wcscpy_s(tchar,TEXT("5"));inti=tchar[0];cout>in;}Output:53但我希望我是5岁。如何做到这一点? 最佳答案 如果你想把一个字符串(包含一个整数)转换成一个int,你可以使用一些C函数,比如atoi()(

c++ - 如何将 INT64 写入 CString

我在C++Windows中编码。INT64dirID=-1;CStringquerySQLStr=_T("");querySQLStr.Format(L"select*fromImageInfowhereFolderPath=%64d;",dirID);querySQLStralwayslikethis:select*fromImageInfowhereFolderPath=1214;使用%64d对吗?非常感谢 最佳答案 我没有方便的Windows机器来测试它,但我认为CString应该接受这个:querySQLStr.Format

在 Windows 中将 __int64 转换为 long

如何在Windows中将__int64转换为long(MSVC8和MSVC6)?正常的类型转换是否有效?此外,将long转换为__int64怎么样?如果多头是负值,它会起作用吗?注意-我说的是__int64变量将始终包含一个长度不超过32位的值的场景。 最佳答案 1。将long转换为__int64根据MSDN在__int64关键字上:The__int64keyworddeclaresanewtype,a64-bit(8-byte)integer.Aswiththeint,short,andlongtypes,the__int64ty

Apache Fuseki:Indoke Str功能

我会运行此查询:SELECTDISTINCT?idstr(?name)但是Fuseki给我这个错误:这线无效。我需要一个字符串值?name.看答案我想你在谈论这样的事情。此消息是由Fuseki组件(或更确切地说是Yasqe)产生的警告。您有两个选择:使用更多一致语法,我。e。SELECTDISTINCT?id(str(?name)AS?str_name)等等忽略此警告并运行查询,JenaArq应该接受并返回结果。