我对c ++很新.我来自java的土地,所以输入/输出系统让我有点困惑,很抱歉,如果这是一个愚蠢的问题.
我正在尝试声明一个字符串,保存一些控制台输入,然后打印字符串.
int _tmain(int argc, _TCHAR* argv[])
{
char* pizza = "";
std::cin >> pizza;
std::cout << pizza;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个访问冲突异常,这让我觉得我的内存地址无效.
我会解释你的代码有什么问题,但首先是正确的代码.
#include <string>
#include <iostream>
int main()
{
std::string pizza;
std::cin >> pizza;
std::cout << pizza;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它使用标准库字符串类,而不是char*.现在开始你的代码.
char* pizza = "";
Run Code Online (Sandbox Code Playgroud)
这是错的.它以较旧的标准编译,但即便如此仍然是一个坏主意.字符串文字就像""是const字符数组.使用上面的行,您将为此const char数组分配一个非const指针.在涉及数组和指针的所有其他上下文中,这应该是非法的.由于历史原因,允许(直到C++ 11)字符串文字,但你仍然不应该这样做.因为即使你有一个非const指针,写入它指向的位置仍然是非法的,这就是你尝试这样做时获得访问冲突的原因:
std::cin >> pizza;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
748 次 |
| 最近记录: |