c++ - 为什么 Visual Studio 在我的 C++ 程序中输出这个(添加字符串和字符)?
问题描述
我一直在阅读Bjarne Stroustrup的《 The C++ Programming Language 》一书。在第 105 页上,我尝试了练习 12,我遇到了一件(对我而言)疯狂的事情。在此之后,我成功地解决了这个练习,但我很感兴趣,这是如何以及为什么会发生的?这是最小化的代码(仅适用于这种特定情况):
int main()
{
char c;
std::cin >> c;
std::cout << "" + c;
}
尝试输入一个字符,结果非常令人惊讶。对于'a',我得到Community\VC\Tools\MSVC\14.28.29910\include\vector,对于'Z',我得到o\2019\Community\VC\Tools\MSVC\14.28.29910\include\vector。这也适用于我尝试输入的其他字符。我真的找不到任何模式。向量目录与输入的字符有什么关系?
我知道这种添加字符串与字符是被禁止的(添加不同的实体)并且我之后使用了很多替代方法,但我很感兴趣:为什么会发生这种情况?Visual Studio 从哪里获得一些随机目录,对其进行切片并在控制台中提供它?
作为评论,我现在知道我实际上将字符串文字的地址和字符的数值加在一起。但是现在我很感兴趣:为什么字符串文字的地址总是一样的?考虑以下代码:
int main()
{
char c;
std::cin >> c;
std::cout << "" + c << std::endl << &"" << std::endl << &"Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/include/vector";
}
字符串文字“”和“Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/include/vector”(我得到的最长字符串)的地址总是相同的。为什么?内存地址不是随机给的吗?
解决方案
推荐阅读
- python - 我想从python中的一个单词中删除元音,
- android - RecyclerView :项目位置意图
- node.js - 将示例代码与 Promise、await 和 await 同步
- mariadb - Liquibase generateChangeLog 成功但更改日志为空?
- python - argparse:取决于另一个参数的值的参数名称?
- java - 如何在 XWPFDocument (apache poi) 中设置编号的字体和字体大小?
- java - 列表
如何获得具体的索引? - bash - bash脚本ssh到服务器然后运行命令
- string - Python:通过分隔符拆分字符串并写入excel文件中的列
- java - JavaFx:Bindings.when().then().otherwise() 中的 NPE